|
|
  |
Кто-нибудь пользуется avr-c++ и отладчиком?, поделитесь опытом |
|
|
|
Jun 1 2011, 06:53
|
Знающий
   
Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153

|
Я пытался использовать avr-c++ и avrstudio (компилирую с ключом -g2, в студии открываю elf). Студия 4.18 b716 напоролся на следующее: 1. Наследование Код struct A { int a; }; struct B : A { int b; } bb; В переменной bb не виден член "а". Для меня это критично 2. Не видны глобальные переменные из пространств имен. В принципе можно обойтись 3. Члены структур типа bool не видны - ошибка "Неизвестный тип". Тоже можно обойтись. Хотя неприятно... Попробовал сделать cof из elf. Студия его открывает, но сразу сваливается в окно ассемблера, не дает поставить точку останова на сишном тексте программы (хотя список сишных файлов показывает). Avarice судя по вот этому http://www.avrfreaks.net/index.php?name=PN...pic&t=97934 не умеет работать с xmega. К сожалению, я нарыл это только после того, как все настроил и увидел, что брекпоинты не ставятся  Как вы отлаживаете с++ код? Может есть еще какие-нибудь флаги компиляции или линковки для большей дружбы со студией?
|
|
|
|
|
Jun 1 2011, 10:21
|
Знающий
   
Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153

|
Цитата(demiurg_spb @ Jun 1 2011, 13:40)  Ничего удобнее консоли не встречал. А как вы ее готовите? Вот например, есть у меня много глобальных данных и я хочу их посмотреть. Делать форматирование на стороне прошивки как-то не охота. Кидать дамп памяти, а потом на ПС восстанавливать структуру?
|
|
|
|
|
Jun 3 2011, 06:22
|
Знающий
   
Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153

|
Цитата(demiurg_spb @ Jun 1 2011, 14:39)  Много обычно смотреть не требуется. Смотрю обычно максимум 3-5 штук. Подходы могут быть совершенно разные. Можно форматировать дамп в таргете и прямо в терминале смотреть. ИМХО, неудобно. Сегодня нужен один комплект переменных, завтра второй, а послезавтра снова первый. Т.е. в коде остаются закомментированные/задефайненные куски по выводу переменных. Эти куски постепенно устаревают, их надо или обновлять или выкидывать. Есть несколько дурацкая мысль потратить неделю и сделать на ПС анализатор, который, сопоставляя дамп куска памяти и отладочную информацию из elf-файла, выдает дерево переменных. Такая штука была бы очень полезна и при наличии отладчика - например можно получить дамп памяти залоченного девайса у клиента. При этом девайс надо всего лишь научить по запросу выплевывать дамп заданного куска ОЗУ.
|
|
|
|
|
Jun 6 2011, 04:39
|

неотягощённый злом
     
Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643

|
Цитата(Непомнящий Евгений @ Jun 3 2011, 10:22)  ИМХО, неудобно. Сегодня нужен один комплект переменных, завтра второй, а послезавтра снова первый. Т.е. в коде остаются закомментированные/задефайненные куски по выводу переменных. Эти куски постепенно устаревают, их надо или обновлять или выкидывать. Написать Код dprint(var); Ничуть не дольше чем добавить переменную в отладчике. Более того значение переменной ты будешь видеть всегда адекватное (именно в этой точке программы), даже при работе в реалтайме. Обычно интересуют значения конкретных переменных в конкретных точках программы, а не вся жизнь переменной (тем более регистровой). Цитата ...сопоставляя дамп... А что у Вас за специфика, что нужен дамп памяти? Вы собственную многопоточную ость дебажите?
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
Jun 6 2011, 06:43
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(demiurg_spb @ Jun 6 2011, 11:39)  Написать Код dprint(var); Ничуть не дольше чем добавить переменную в отладчике. Не дольше, да. Но только нужно пересобирать программу. Каждый раз, когда хочется увидеть переменную, которой ещё нет в печати. Цитата(demiurg_spb @ Jun 6 2011, 11:39)  Более того значение переменной ты будешь видеть всегда адекватное (именно в этой точке программы), даже при работе в реалтайме. Это так. Но иногда рулит метод отладки, когда останавливаешься в каком-то месте программы по брейкпоинту и аккуратно по шагам идёшь и смотришь, что там происходит, отслеживая значения переменных, имеющих отношение к данному фрагменту программы - вот тут их удобно вытащить на watch окошко. Резюмируя: ни один из способов (через отладчик или через печать) не является безоговорочно лучшим. Оба они хороши в разных ситуациях, и лучше иметь их в арсенале оба.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|