реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Кто-нибудь пользуется avr-c++ и отладчиком?, поделитесь опытом
Непомнящий Евген...
сообщение Jun 1 2011, 06:53
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 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. К сожалению, я нарыл это только после того, как все настроил и увидел, что брекпоинты не ставятся sm.gif

Как вы отлаживаете с++ код? Может есть еще какие-нибудь флаги компиляции или линковки для большей дружбы со студией?
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jun 1 2011, 09:34
Сообщение #2


неотягощённый злом
******

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



Цитата(Непомнящий Евгений @ Jun 1 2011, 10:53) *
Как вы отлаживаете с++ код?
Также как и Си-код - через консоль.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Jun 1 2011, 09:39
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(demiurg_spb @ Jun 1 2011, 13:34) *
Также как и Си-код - через консоль.


Консоль и осциллограф, а также отладка на PC конечно рулят, но аппаратный отладчик часто весьма удобен.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jun 1 2011, 09:40
Сообщение #4


неотягощённый злом
******

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



Ничего удобнее консоли не встречал.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Jun 1 2011, 10:21
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(demiurg_spb @ Jun 1 2011, 13:40) *
Ничего удобнее консоли не встречал.


А как вы ее готовите? Вот например, есть у меня много глобальных данных и я хочу их посмотреть.

Делать форматирование на стороне прошивки как-то не охота.

Кидать дамп памяти, а потом на ПС восстанавливать структуру?
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jun 1 2011, 10:39
Сообщение #6


неотягощённый злом
******

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



Много обычно смотреть не требуется. Смотрю обычно максимум 3-5 штук.
Подходы могут быть совершенно разные.
Можно форматировать дамп в таргете и прямо в терминале смотреть.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Jun 3 2011, 06:22
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(demiurg_spb @ Jun 1 2011, 14:39) *
Много обычно смотреть не требуется. Смотрю обычно максимум 3-5 штук.
Подходы могут быть совершенно разные.
Можно форматировать дамп в таргете и прямо в терминале смотреть.


ИМХО, неудобно. Сегодня нужен один комплект переменных, завтра второй, а послезавтра снова первый. Т.е. в коде остаются закомментированные/задефайненные куски по выводу переменных. Эти куски постепенно устаревают, их надо или обновлять или выкидывать.

Есть несколько дурацкая мысль потратить неделю и сделать на ПС анализатор, который, сопоставляя дамп куска памяти и отладочную информацию из elf-файла, выдает дерево переменных. Такая штука была бы очень полезна и при наличии отладчика - например можно получить дамп памяти залоченного девайса у клиента.

При этом девайс надо всего лишь научить по запросу выплевывать дамп заданного куска ОЗУ.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jun 6 2011, 04:39
Сообщение #8


неотягощённый злом
******

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



Цитата(Непомнящий Евгений @ Jun 3 2011, 10:22) *
ИМХО, неудобно. Сегодня нужен один комплект переменных, завтра второй, а послезавтра снова первый. Т.е. в коде остаются закомментированные/задефайненные куски по выводу переменных. Эти куски постепенно устаревают, их надо или обновлять или выкидывать.

Написать
Код
dprint(var);
Ничуть не дольше чем добавить переменную в отладчике.
Более того значение переменной ты будешь видеть всегда адекватное (именно в этой точке программы), даже при работе в реалтайме.
Обычно интересуют значения конкретных переменных в конкретных точках программы, а не вся жизнь переменной (тем более регистровой).
Цитата
...сопоставляя дамп...
А что у Вас за специфика, что нужен дамп памяти? Вы собственную многопоточную ость дебажите?


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Jun 6 2011, 05:40
Сообщение #9


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(Непомнящий Евгений @ Jun 3 2011, 09:22) *
Такая штука была бы очень полезна и при наличии отладчика - например можно получить дамп памяти залоченного девайса у клиента.

При этом девайс надо всего лишь научить по запросу выплевывать дамп заданного куска ОЗУ.


Мысль интересная. Вставлю 5 коп, как я бы сделал без отладчика.
Я б повесил кусок кода, обслуживающий формирование брекпоинта, на прерывание типа UDRE - чтобы флаг прерывания вставал всегда после выхода из процедуры обработки. Таким образом, уронив производительность раз в 16, можно ставить точки останова в залоченном девайсе.
Go to the top of the page
 
+Quote Post
dxp
сообщение Jun 6 2011, 06:43
Сообщение #10


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 окошко.

Резюмируя: ни один из способов (через отладчик или через печать) не является безоговорочно лучшим. Оба они хороши в разных ситуациях, и лучше иметь их в арсенале оба.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jun 6 2011, 07:30
Сообщение #11


неотягощённый злом
******

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



Согласен.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 17:45
Рейтинг@Mail.ru


Страница сгенерированна за 0.01408 секунд с 7
ELECTRONIX ©2004-2016