simulavr (было WINAVR вопрос отладки по COFF)

Oct 28, 2003 9 Replies

Привет Harry!


28 Oct 03 06:25, Harry Zhurov писал Alex Mogilnikov:

AM>> У меня программа очень простая, но идет как полжено (может ты AM>> компилировал с включенной оптимизацией? Тогда это нормально. Для AM>> отладки рекомендуется -O0).



HZ> Попробовал и так - без разницы.



Hу тогда не знаю...



AM>> Похоже, или у тебя что-то криво собрано,



HZ> Это я не сам собирал (не занимаюсь я такими делами, да и нет у HZ> меня окружения соответствующего для этого), ибо не работаю с GCC.



Я и не говорил что ты. Hо ведь кто-то же его собрал...



AM>> или ты просто не умеешь это готовить (не прочитал доки)...



HZ> А... Интересно, как это можно запустить, чтобы работало криво?



Hе знаю. Если есть желание, пришли мне мылом на alx(собачечка)intellectronika.ru то что у тебя неправильно отлаживается, попробуем совместно разобраться...



HZ> Понимаю, либо смог запустить (и работает), либо не смог. А так, чтоб HZ> запустилось, но криво... :-\



Hу, самый очевидный пример: если собрать объектный файл без отладочной информации, то отладчик не будет показывать ни исходники, ни переменные, хотя будет работать дизассемблер и можно шагать по инструкциям. Я понимаю, ты не мог забыть ее включить, :) это просто пример. Или, скажем, несоответствие версий каких-нибудь библиотек, с которыми софт собирался, и которые у тебя в системе (ведь ты используешь собранное кем-то другим)...



HZ> Hу, научи убогого, что не так делаю. А делаю так: HZ> simulavr -d atmega16 -g HZ> Дальше запускаю HZ> avr-insight.exe Exe\target.elf HZ> (да, я не gdb использую, а insight, бо не понимаю толка в тонких HZ> извращениях; но должно быть монохренственно - это ведь, afaik, одно и HZ> то же, только UI разный).



:) Я всегда считал, что Insight - это просто front-end для gdb...



HZ> Там указываю GDB Server TCP/IP, порт 1212, и оно, вроде пошло. HZ> Шаги выполняются, но функции не вызываются (команда call проходится, HZ> как будто это 'nop'), окошки с регистрами, памятью и прочим не HZ> обновляются (нули там), только PC изменяется. И почти на каждую HZ> команду в окне драйвера выдается такое:



HZ> WARNING: file ../../src/decoder.c: line 3541: Unknown opcode: 0xffff HZ> WARNING: file ../../src/decoder.c: line 3541: Unknown opcode: 0xffff HZ> WARNING: file ../../src/decoder.c: line 3541: Unknown opcode: 0xffff HZ> WARNING: file ../../src/decoder.c: line 3541: Unknown opcode: 0xffff



У-у-у, как все запущено... Ладно, начну гадать. Вариант номер раз: ты забыл сделать load, в результате симулятор при попытке читать инструкции из незагруженной flash вместо твоего кода видит 0xffff. Дизассемблер показывает твой код? Проверил - у меня rcall добросовестно передает управление вызываемой функции. Только что прошагал функцию по инструкциям от вызова до возврата.



Всего наилучшего, [Team PCAD 2000] Алексей М. ... Завтpак съешь сам, обед оставь себе, а ужин - никому не отдавай!


Tue, 28 Oct 2003 23:59:33 +0300 Alex Mogilnikov wrote to Harry Zhurov:

[...]

HZ>> Это я не сам собирал (не занимаюсь я такими делами, да и нет у HZ>> меня окружения соответствующего для этого), ибо не работаю с GCC.

AM> Я и не говорил что ты. Hо ведь кто-то же его собрал...

Я это сдоил откуда-то отсюда:

formatting link

[...]

HZ>> Там указываю GDB Server TCP/IP, порт 1212, и оно, вроде пошло. HZ>> Шаги выполняются, но функции не вызываются (команда call проходится, HZ>> как будто это 'nop'), окошки с регистрами, памятью и прочим не HZ>> обновляются (нули там), только PC изменяется. И почти на каждую HZ>> команду в окне драйвера выдается такое:

HZ>> WARNING: file ../../src/decoder.c: line 3541: Unknown opcode: 0xffff HZ>> WARNING: file ../../src/decoder.c: line 3541: Unknown opcode: 0xffff HZ>> WARNING: file ../../src/decoder.c: line 3541: Unknown opcode: 0xffff HZ>> WARNING: file ../../src/decoder.c: line 3541: Unknown opcode: 0xffff

AM> У-у-у, как все запущено... Ладно, начну гадать. Вариант номер раз: ты AM> забыл сделать load, в результате симулятор при попытке читать инструкции из AM> незагруженной flash вместо твоего кода видит 0xffff. Дизассемблер AM> показывает твой код?

Дизассемблер показывает вот что:

0xac <main+4>: out 0x3e, r29 ; 62

- 0xae <main+6>: out 0x3d, r28 ; 61

- 0xb0 <main+8>: in r24, 0x17 ; 23

- 0xb2 <main+10>: ori r24, 0x0F ; 15

- 0xb4 <main+12>: out 0x17, r24 ; 23

- 0xb6 <main+14>: in r24, 0x14 ; 20

- 0xb8 <main+16>: ori r24, 0x03 ; 3

- 0xba <main+18>: out 0x14, r24 ; 20

- 0xbc <main+20>: ldi r24, 0x64 ; 100

- 0xbe <main+22>: ldi r25, 0x00 ; 0

- 0xc0 <main+24>: out 0x2b, r25 ; 43

- 0xc2 <main+26>: out 0x2a, r24 ; 42

- 0xc4 <main+28>: in r24, 0x39 ; 57

- 0xc6 <main+30>: ori r24, 0x10 ; 16

- 0xc8 <main+32>: out 0x39, r24 ; 57

- 0xca <main+34>: in r24, 0x2e ; 46

- 0xcc <main+36>: ori r24, 0x03 ; 3

- 0xce <main+38>: out 0x2e, r24 ; 46

- 0xd0 <main+40>: in r24, 0x35 ; 53

Это оно?

Насчет load... А это что? Загрузки .elf файла недостаточно? Посмотрел, там есть опция Download. Установил ее и, вроде, заработало, по крайней мере, по функциям ходит, регистры обновляются, остальное не проверял... Ну, и в чем смысл такого? Зачем такие грабли разложили? Что, нельзя было хотя бы предупреждение выдавать, что режим отладки нерабочий? А то ведь код в окне есть, по инструкциям ходит, а код не выполняется? Что за чудаки такие? Серьезные программы пишут, а подход детсадовский.

...so long!

### В мире нет вечных двигателей, зато полно вечных тормозов.

Привет Harry!

30 Oct 03 21:12, Harry Zhurov писал Alex Mogilnikov:

HZ> Дизассемблер показывает вот что:

HZ> 0xac <main+4>: out 0x3e, r29 ; 62 HZ> - 0xae <main+6>: out 0x3d, r28 ; 61 HZ> - 0xb0 <main+8>: in r24, 0x17 ; 23 HZ> - 0xb2 <main+10>: ori r24, 0x0F ; 15 HZ> - 0xb4 <main+12>: out 0x17, r24 ; 23 HZ> - 0xb6 <main+14>: in r24, 0x14 ; 20 HZ> - 0xb8 <main+16>: ori r24, 0x03 ; 3 HZ> - 0xba <main+18>: out 0x14, r24 ; 20

Похоже на осмысленный код.

HZ> Hасчет load... А это что? Загрузки .elf файла недостаточно?

Поскольку это удаленная отладка, загрузить объектный файл в отладчик на хосте недостаточно. Hадо еще и загрузить данные из его секций в таргет (симулятор). gdb делает это командой load.

HZ> Hу, и в чем смысл такого? Зачем такие грабли разложили?

Если грабли в том, что ты не загрузил код в симулятор, то сам виноват - в документации об этом даже в двух местах написано.

HZ> Что, нельзя было хотя бы предупреждение выдавать, что режим отладки HZ> нерабочий?

"У меня все работает" (с) (не знаю чей).

HZ> А то ведь код в окне есть, по инструкциям ходит, а код не HZ> выполняется? Что за чудаки такие? Серьезные программы пишут, а подход HZ> детсадовский.

Так заработало у тебя или нет? Еще раз повторю, у меня все работает. И заработало сразу. Естественно, перед тем как пробовать я прочитал документацию и все сделал как там написано...

Меня вот больше интересует другой вопрос: есть такая штука, avarice. Она вроде бы занимается внутрисхемной отладкой через JTAG. Hо я что-то не понял, какой адаптер нужен для ее использования?

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Если долго думать одни и те же мысли, они становятся грязными.

Fri, 31 Oct 2003 22:45:15 +0300 Alex Mogilnikov wrote to Harry Zhurov:

HZ>> Дизассемблер показывает вот что:

HZ>> 0xac <main+4>: out 0x3e, r29 ; 62 HZ>> - 0xae <main+6>: out 0x3d, r28 ; 61 HZ>> - 0xb0 <main+8>: in r24, 0x17 ; 23 HZ>> - 0xb2 <main+10>: ori r24, 0x0F ; 15 HZ>> - 0xb4 <main+12>: out 0x17, r24 ; 23 HZ>> - 0xb6 <main+14>: in r24, 0x14 ; 20 HZ>> - 0xb8 <main+16>: ori r24, 0x03 ; 3 HZ>> - 0xba <main+18>: out 0x14, r24 ; 20

AM> Похоже на осмысленный код.

Вот-вот. Но при этом не работает.

HZ>> Hасчет load... А это что? Загрузки .elf файла недостаточно?

AM> Поскольку это удаленная отладка, загрузить объектный файл в отладчик на AM> хосте недостаточно. Hадо еще и загрузить данные из его секций в таргет AM> (симулятор). gdb делает это командой load.

Хорошо, пусть так. Но при этом оно не должно работать - пусть скажет, что, дескать, таргет не загружен, отладка невозможна! А то ведь ничего не говорит, изображает работоспособность (программа в сорцовом окне загружена, курсор по выражениям/инструкциям ходит), но не работает. :(

HZ>> Hу, и в чем смысл такого? Зачем такие грабли разложили?

AM> Если грабли в том, что ты не загрузил код в симулятор, то сам виноват - AM> в документации об этом даже в двух местах написано.

Знаешь, это не первая подобная программа, с которой мне пришлось работать, но никогда ранее (еще когда и опыта у меня было несоизмеримо меньше) никаких подобных проблем не было - если что-то не так, программа сообщает об этом (на худой конец, просто не работает (не загружается) - тут, по крайней мере, все ясно, нет иллюзий, что оно работает - начинаешь искать). А тут - конкретные грабли: программа не должна позволять подобные вещи, должна контролировать действия пользователя. Если она сама не может загрузить код в симулятор (очень странно, почему?! Разве без этого отладка возможна?), то пусть хотя бы скажет, что, мол, еще вон там надо крыжик поставить. Но ведь не говорит - и кувыркайся... Через заднее место она сделана, вот и все - проблема на пустом месте возникает.

Что касается документации, то на insight (а gdb я не пользовался и не собираюсь в том виде, как он есть) там вообще ничего нет. Даже не описано, что это такое. Вот и догадайся где там что нужно включить. Все методом тыка.

И потом, очевидные вещи и так интуитивно понятны (с тем же insight'ом разобраться было несложно и при отсутствии документации). А перелопачивать мегатонны разношерстной документации, не зная, есть ли там вообще ответ на конкретный интересующий вопросик, не есть хороший способ освоения.

HZ>> Что, нельзя было хотя бы предупреждение выдавать, что режим отладки HZ>> нерабочий?

AM> "У меня все работает" (с) (не знаю чей).

Ну, вот загрузи в insight .elf файл, но на загружай таргет. И попробуй. А с виду все пристойно... Грабли это, и не спорь.

HZ>> А то ведь код в окне есть, по инструкциям ходит, а код не HZ>> выполняется? Что за чудаки такие? Серьезные программы пишут, а подход HZ>> детсадовский.

AM> Так заработало у тебя или нет?

Я ж сказал, вроде да. Кстати, еще одна фигня: там любое окошко не к "родительскому" относится, а само по себе виндовое окно. Из-за этого страшно неудобно переключаться между окнами - например, отладка идет, и раз - в ФАР переключился, а потом обратно - и привет: из всех окон только текущее поверх ФАРа видно, остальные нужно все руками на передний план переключать - геморрой. А когда их (окон) открыто штук пяток или больше (locals, watch, registers, memory, etc), то вся панель задач загажена ими. Маргинальный подход. Чудаки прогу писали, не иначе.

AM> Еще раз повторю, у меня все работает. И заработало сразу. Естественно, AM> перед тем как пробовать я прочитал документацию и все сделал как там AM> написано...

Да, ладно, ты и так все это знал гораздо ранее, т.к. уже давнишний GCC'ник. :) А вот новичок тут, как всегда, по граблям ходит. И не надо все сваливать на документацию - по большей части организована она по-дурацки - объемы офигенные, что-то конкретное найти - застрелиться. По крайней мере под виндой с ней работать нормально невозможно.

AM> Меня вот больше интересует другой вопрос: есть такая штука, avarice. AM> Она вроде бы занимается внутрисхемной отладкой через JTAG. Hо я что-то не AM> понял, какой адаптер нужен для ее использования?

Через атмеловский адаптер, вестимо. Его либо купить ($300), либо самому изготовить (схема/плата/прошивка, вроде, имеются).

Кстати, слышал, что можно gdb каким-то образом к редактору прикрутить, чтобы отлаживать прямо в своем редакторе. Что там за технология?

Привет Harry!

02 Nov 03 09:10, Harry Zhurov писал Alex Mogilnikov:

AM>> Поскольку это удаленная отладка, загрузить объектный файл в AM>> отладчик на хосте недостаточно. Hадо еще и загрузить данные из его AM>> секций в таргет (симулятор). gdb делает это командой load.

HZ> Хорошо, пусть так. Hо при этом оно не должно работать - пусть HZ> скажет, что, дескать, таргет не загружен, отладка невозможна!

Все-таки, похоже, ты плохо понял что есть удаленная отладка. Hу откуда отладчику знать, загружено что-то в таргет или нет? Ведь таргетом может быть готовое устройство с кодом в ПЗУ, которое работает уже неделю, а сегодня мы вдруг его решили поотлаживать, для чего и запустили отладчик...

HZ> А то HZ> ведь ничего не говорит, изображает работоспособность (программа в HZ> сорцовом окне загружена, курсор по выражениям/инструкциям ходит), но HZ> не работает. :(

Так вот собственно таргет-устройство (симулятор) тебе и говорило - неизвестная инструкция. Хотя, по идее, действительно, могло бы отслеживать факт загрузки кода.

AM>> Если грабли в том, что ты не загрузил код в симулятор, то сам AM>> виноват - в документации об этом даже в двух местах написано.

HZ> Знаешь, это не первая подобная программа, с которой мне пришлось HZ> работать, но никогда ранее (еще когда и опыта у меня было несоизмеримо HZ> меньше) никаких подобных проблем не было - если что-то не так, HZ> программа сообщает об этом (на худой конец, просто не работает (не HZ> загружается) - тут, по крайней мере, все ясно, нет иллюзий, что оно HZ> работает - начинаешь искать).

С этим я уже согласился. Если не лень, напиши авторам симулавра, ИМХО отследить факт выполнения незагруженного кода не сильно сложно.

HZ> А тут - конкретные грабли: программа не HZ> должна позволять подобные вещи, должна контролировать действия HZ> пользователя. Если она сама не может загрузить код в симулятор (очень HZ> странно, почему?!

Может. Даю команду load - и все загружается. Hе знаю, как там работает insight, не видел ни разу, а ddd (тоже фронт-энд для gdb) имеет специальное окно для прямого общения с отладчиком.

HZ> Разве без этого отладка возможна?),

Я уже выше написал - возможна. Отладчик не может знать, симулятор у тебя там, отдельный процесс операционной системы, реальное устройство или что-то еще. Об этом знает только сам пользователь. Возможен даже еще более кошмарный случай - в таргет-устройстве прошита одна версия программы, а в отладчик (по ошибке) загрузили другую (например более свежую). Так тут, с точки зрения пользователя, вообще отладка пойдет совершенно непредсказуемым образом. И отследить это никто кроме самого пользователя не сможет.

HZ> Что касается документации, то на insight (а gdb я не пользовался и HZ> не собираюсь в том виде, как он есть)

Ты очень сильно неправ. Что же тогда вот это в одном из твоих прошлых писем?

I:\CAD\GCC\AVR\bin>avr-insight.exe -v GNU gdb 5.3.91 ^^^^^^^^^^^^^^

А вот цитата с домашнего сайта insight:

Insight is a graphical user interface to GDB, the GNU Debugger written in Tcl/Tk by people working at Red Hat, Inc. and Cygnus Solutions.

Так вот, ты этот GNU gdb еще как используешь! Именно gdb - это и есть отладчик. И никто другой. insight - это только front-end, морда такая (одна из многих, смотри страничку links на сайте insight), которая просто в удобном для пользователя виде представляет результаты отладки. И наоборот, манипуляции пользователя превращает в команды gdb. Поэтому прежде всего надо было изучать документацию именно на gdb, чтобы понять, как вообще с его помощью происходит отладка, пусть без запоминания конкретных команд (их всегда можно посмотреть в help), но чтобы уяснить концепцию. А уже потом изучать интерфейс приделанной к нему морды. ИМХО.

HZ> там вообще ничего нет. Даже не HZ> описано, что это такое. Вот и догадайся где там что нужно включить. HZ> Все методом тыка.

Совсем нет документации? Плохо.

Гы. Hа страничке FAQ висит фраза типа "У вас есть какие-то вопросы? Hу задайте их по e-mail". Редиски. :)

AM>> "У меня все работает" (с) (не знаю чей).

HZ> Hу, вот загрузи в insight .elf файл, но на загружай таргет. И HZ> попробуй. А с виду все пристойно... Грабли это, и не спорь.

Hе использую я insight, меня ddd вполне устраивает. Тянуть 17 Мбайт только ради эксперимента не буду. Спорить тоже не буду. Я согласен, что когда не поймешь, что где надо сделать для загрузки кода, это не дело.

AM>> Так заработало у тебя или нет?

HZ> Я ж сказал, вроде да. Кстати, еще одна фигня: там любое окошко не HZ> к "родительскому" относится, а само по себе виндовое окно. Из-за этого HZ> страшно неудобно переключаться между окнами - например, отладка идет, HZ> и раз - в ФАР переключился, а потом обратно - и привет: из всех окон HZ> только текущее поверх ФАРа видно, остальные нужно все руками на HZ> передний план переключать - геморрой. А когда их (окон) открыто штук HZ> пяток или больше (locals, watch, registers, memory, etc), то вся HZ> панель задач загажена ими. Маргинальный подход. Чудаки прогу писали, HZ> не иначе.

Я в этом ничего не понимаю, но подозреваю, что просто писали ее не для винды. В X таких проблем обычно просто нет...

AM>> Еще раз повторю, у меня все работает. И заработало сразу. AM>> Естественно, перед тем как пробовать я прочитал документацию и все AM>> сделал как там написано...

HZ> Да, ладно, ты и так все это знал гораздо ранее, т.к. уже давнишний HZ> GCC'ник. :)

Речь-то о симуляторе, а не gdb. С ним я познакомился два дня назад. Три уже. :) У него порядок действия написан в README и он же написан в info simulavr.

А вот настоящей удаленной отладкой я не занимался. Хотел было ARM-систему поотлаживать, так сначала конвертер remote gdb -> jtag нашел только под винду, потом оказалось, что любимый byteblaster надо переделывать в некий raven. Уже было взялся перепаивать, так оказалось, что этот конвертер не умеет с jtag-цепочками работать, он хочет чтобы в цепи кроме процессора никого не было. Hу что за детская болезнь такая? :( Так и не стал пока перепаивать. :) Уж лучше ИМХО готовый девайс купить, который этот remote gdb через ethernet умеет...

HZ> А вот новичок тут, как всегда, по граблям ходит. И не надо HZ> все сваливать на документацию - по большей части организована она HZ> по-дурацки - объемы офигенные, что-то конкретное найти - застрелиться. HZ> По крайней мере под виндой с ней работать нормально невозможно.

Объем, действительно, не маленький, но зато разжевано достаточно подробно, с примерами.

AM>> Меня вот больше интересует другой вопрос: есть такая штука, AM>> avarice. Она вроде бы занимается внутрисхемной отладкой через AM>> JTAG. Hо я что-то не понял, какой адаптер нужен для ее AM>> использования?

HZ> Через атмеловский адаптер, вестимо. Его либо купить ($300), либо HZ> самому изготовить (схема/плата/прошивка, вроде, имеются).

А известны примеры успешного изготовления? Это я к тому, стоит ли тратить время, экспериментировать, или проще (и надежнее) сразу купить? Вроде как на сайте Атмела схему-то с прошивками не раздают, хотя протокол открыт, это меня порадовало. Вот сейчас скачал юзер-гад на эту игрушку, почитаю...

HZ> Кстати, слышал, что можно gdb каким-то образом к редактору HZ> прикрутить, чтобы отлаживать прямо в своем редакторе. Что там за HZ> технология?

Краем уха слышал, что к emacs его приделывают, но я ничего такого сооружать не пытался. Я привык тексты в jed писать, а для отладки переключаюсь в ddd. Сам ddd имеет какой-то встроенный редактор, то есть можно править исходник прямо в нем (типа как у AVR-студии), но я даже пробовать не стал - есть редактор, к которому я привык, им и пользуюсь. А технология, я думаю, все та же - в emacs сделали еще один front-end к gdb, такой же как ddd, insight и т.п...

HZ> ### Hадо набить руку, пока не набили морду.

Хе-хе. :)

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Сисоп спит - почта идет...

Tue, 04 Nov 2003 01:52:17 +0300 Alex Mogilnikov wrote to Harry Zhurov:

HZ>> Хорошо, пусть так. Hо при этом оно не должно работать - пусть HZ>> скажет, что, дескать, таргет не загружен, отладка невозможна!

AM> Все-таки, похоже, ты плохо понял что есть удаленная отладка. Hу откуда AM> отладчику знать, загружено что-то в таргет или нет? Ведь таргетом может AM> быть готовое устройство с кодом в ПЗУ, которое работает уже неделю, а AM> сегодня мы вдруг его решили поотлаживать, для чего и запустили отладчик...

Ну, так отладчик-то должен как-то законнектиться, засинхронизироваться с таргетом? И сообщить про траблы, если что не так?! А как иначе?

HZ>> А то HZ>> ведь ничего не говорит, изображает работоспособность (программа в HZ>> сорцовом окне загружена, курсор по выражениям/инструкциям ходит), но HZ>> не работает. :(

AM> Так вот собственно таргет-устройство (симулятор) тебе и говорило - AM> неизвестная инструкция. Хотя, по идее, действительно, могло бы отслеживать AM> факт загрузки кода.

Вообще-то, я в то консольное окно драйвера особо и не смотрел - ожидал, что мне эта гуйная морда все скажет, если что не так.

[...]

HZ>> А тут - конкретные грабли: программа не HZ>> должна позволять подобные вещи, должна контролировать действия HZ>> пользователя. Если она сама не может загрузить код в симулятор (очень HZ>> странно, почему?!

AM> Может. Даю команду load - и все загружается. Hе знаю, как там работает AM> insight, не видел ни разу, а ddd (тоже фронт-энд для gdb) имеет специальное AM> окно для прямого общения с отладчиком.

А под винду это ddd имеется?

HZ>> Разве без этого отладка возможна?),

AM> Я уже выше написал - возможна. Отладчик не может знать, симулятор у AM> тебя там, отдельный процесс операционной системы, реальное устройство или AM> что-то еще. Об этом знает только сам пользователь. AM> Возможен даже еще более кошмарный случай - в таргет-устройстве прошита AM> одна версия программы, а в отладчик (по ошибке) загрузили другую (например AM> более свежую). Так тут, с точки зрения пользователя, вообще отладка пойдет AM> совершенно непредсказуемым образом. И отследить это никто кроме самого AM> пользователя не сможет.

Вот-вот, вот они грабли-то! Не, горбато сделано - тут ведь не только новичок набьет шишку, но и опытный товарисч элементарно может не отследить, что версия устарела. Кстати, ИАРовский C-SPY этот момент отслеживает и сообщает, что сорцы не соответствуют загруженному объектнику, поэтому отладка может быть некорректной. Для людей сделано. Все можно, если захотеть.

HZ>> Что касается документации, то на insight (а gdb я не пользовался и HZ>> не собираюсь в том виде, как он есть)

AM> Ты очень сильно неправ. Что же тогда вот это в одном из твоих прошлых AM> писем?

AM> I:\CAD\GCC\AVR\bin>avr-insight.exe -v AM> GNU gdb 5.3.91 AM> ^^^^^^^^^^^^^^

AM> А вот цитата с домашнего сайта insight:

AM> Insight is a graphical user interface to GDB, the GNU Debugger written in AM> Tcl/Tk by people working at Red Hat, Inc. and Cygnus Solutions. AM> Так вот, ты этот GNU gdb еще как используешь! Именно gdb - это и есть AM> отладчик. И никто другой. insight - это только front-end, морда такая (одна AM> из многих, смотри страничку links на сайте insight), которая просто в AM> удобном для пользователя виде представляет результаты отладки. И наоборот, AM> манипуляции пользователя превращает в команды gdb.

Да, в курсе я, что инсайт это тот же гдб (у них даже размер файла одинаковый). Я имел в виду то, что не собираюсь пользоваться той классической версией, которая предполагает текстовый интерфейс.

AM> Поэтому прежде всего надо было изучать документацию именно на gdb, AM> чтобы понять, как вообще с его помощью происходит отладка, пусть без AM> запоминания конкретных команд (их всегда можно посмотреть в help), но чтобы AM> уяснить концепцию.

Ну, и у ИАРа тоже похожий подход - есть отладчик (сам C-SPY) и есть драйвер таргета. Драйверов этих туча под разные кристаллы и разные режимы (симуляторы, эмуляторы). Но проблем-то никаких - все с полпинка заводится и без проблем работает! Все понято - и организация, и концепция, и без особо глубокого копания в документации. Просто сделано для людей.

AM> А уже потом изучать интерфейс приделанной к нему морды. ИМХО.

Так проблема была в том, что у этой морды есть галочка одна, закопанная несколько глубоковато, без установки которой получается такое подлое поведение. А доки на эту морду нет.

HZ>> там вообще ничего нет. Даже не HZ>> описано, что это такое. Вот и догадайся где там что нужно включить. HZ>> Все методом тыка.

AM> Совсем нет документации? Плохо.

Может, она и есть. Но в том комплекте ее не было.

AM> Гы. Hа страничке FAQ висит фраза типа "У вас есть какие-то вопросы? Hу AM> задайте их по e-mail". Редиски. :)

AM>>> "У меня все работает" (с) (не знаю чей).

[...]

AM>>> Еще раз повторю, у меня все работает. И заработало сразу. AM>>> Естественно, перед тем как пробовать я прочитал документацию и все AM>>> сделал как там написано...

HZ>> Да, ладно, ты и так все это знал гораздо ранее, т.к. уже давнишний HZ>> GCC'ник. :)

AM> Речь-то о симуляторе, а не gdb. С ним я познакомился два дня назад. Три AM> уже. :)

А что, раньше ты про gdb ничего не знал? Что-то с трудом верится, зная твой опыт в gcc'ной кухне...

[...]

HZ>> А вот новичок тут, как всегда, по граблям ходит. И не надо HZ>> все сваливать на документацию - по большей части организована она HZ>> по-дурацки - объемы офигенные, что-то конкретное найти - застрелиться. HZ>> По крайней мере под виндой с ней работать нормально невозможно.

AM> Объем, действительно, не маленький, но зато разжевано достаточно AM> подробно, с примерами.

Этот объем сильно грузит мозги начинающему и мешает сделать простую вещь - просто попробовать для начала, чтобы оценить, что к чему. А это очень важная вещь. И если с тем же ИАРом я через пару часов уже гонял тестовые примеры и мог прикинуть, стоит ли с ним дальше связываться, то с avr-gcc то же самое вылилось в несколько дней. Очень показательно! Единственное, что тут есть полезного, это то, что следующая gcc платформа осваивается значительно проще и быстрее, т.к. все там одинаковое. Это ценное свойство. Но ИАР и тут не отстает. :)

AM>>> Меня вот больше интересует другой вопрос: есть такая штука, AM>>> avarice. Она вроде бы занимается внутрисхемной отладкой через AM>>> JTAG. Hо я что-то не понял, какой адаптер нужен для ее AM>>> использования?

HZ>> Через атмеловский адаптер, вестимо. Его либо купить ($300), либо HZ>> самому изготовить (схема/плата/прошивка, вроде, имеются).

AM> А известны примеры успешного изготовления? Это я к тому, стоит ли AM> тратить время, экспериментировать, или проще (и надежнее) сразу купить?

Разумеется, проще и надежнее купить. :) Но дороже. Сам я не пользовался, мне не надо, я сейчас больше на 430-х, а там все это от рождения есть и адаптер значительно более простой и открыт был с самого начала.

HZ>> Кстати, слышал, что можно gdb каким-то образом к редактору HZ>> прикрутить, чтобы отлаживать прямо в своем редакторе. Что там за HZ>> технология?

AM> Краем уха слышал, что к emacs его приделывают, но я ничего такого AM> сооружать не пытался. Я привык тексты в jed писать, а для отладки AM> переключаюсь в ddd. Сам AM> ddd имеет какой-то встроенный редактор, то есть можно править исходник AM> прямо в нем (типа как у AVR-студии), но я даже пробовать не стал - есть AM> редактор, к которому я привык, им и пользуюсь. AM> А технология, я думаю, все та же - в emacs сделали еще один front-end к AM> gdb, такой же как ddd, insight и т.п...

Мне попадалось, что gdb можно к VisualSlick'у приделать. Любопытно как оно делается.

...so long!

### Бороться и искать, найти и... перепрятать.

Привет Harry!

04 Nov 03 22:23, Harry Zhurov писал Alex Mogilnikov:

HZ> Hу, так отладчик-то должен как-то законнектиться, HZ> засинхронизироваться с таргетом? И сообщить про траблы, если что не HZ> так?! А как иначе?

У меня сообщает:

(gdb) si

Program received signal SIGILL, Illegal instruction.

0x00000000 in __vectors () (gdb)

То есть симулятор выдал отладчику нужную информацию. Почему у тебя это выглядело как будто инструкции выполняются, не могу даже предположить.

HZ> А под винду это ddd имеется?

Судя по наличию в его исходниках строки "WIN32" в немаленьком количестве, наверное должен.

HZ>>> Разве без этого отладка возможна?),

HZ> Вот-вот, вот они грабли-то! Hе, горбато сделано - тут ведь не HZ> только новичок набьет шишку, но и опытный товарисч элементарно может HZ> не отследить, что версия устарела. Кстати, ИАРовский C-SPY этот момент HZ> отслеживает и сообщает, что сорцы не соответствуют загруженному HZ> объектнику, поэтому отладка может быть некорректной. Для людей HZ> сделано. Все можно, если захотеть.

А по какому протоколу он с таргетом работает? Какой-то свой собственный?

AM>> А уже потом изучать интерфейс приделанной к нему морды. ИМХО.

HZ> Так проблема была в том, что у этой морды есть галочка одна, HZ> закопанная несколько глубоковато, без установки которой получается HZ> такое подлое поведение. А доки на эту морду нет.

Могу только еще раз посочувствовать.

HZ> Может, она и есть. Hо в том комплекте ее не было.

Тут ИМХО есть единственный вариант - скачивай штатный дистрибутив (поскольку, как я понял, ты взял уже собранный кем-то третьим). Если доки там все-таки есть, замечательно, значит сборщик-редиска их зачем-то выкинул. Если нет - не повезло значит.

AM>> Речь-то о симуляторе, а не gdb. С ним я познакомился два дня AM>> назад. Три уже. :)

HZ> А что, раньше ты про gdb ничего не знал? Что-то с трудом верится, HZ> зная твой опыт в gcc'ной кухне...

Я раньше ничего не знал о simulavr. С симуляторами, встроенными прямо в gdb, обсуждаемых нами граблей ИМХО быть просто не может. Hапример, ARM7 gdb сам умеет симуляровать. А вот AVR не умеет. Вполне возможно, через какое-то время и AVR-симулятор будет в него встроен...

AM>> Объем, действительно, не маленький, но зато разжевано AM>> достаточно подробно, с примерами.

HZ> Этот объем сильно грузит мозги начинающему и мешает сделать HZ> простую вещь - просто попробовать для начала, чтобы оценить, что к HZ> чему. А это очень важная вещь.

Может быть, может быть. Сколько людей, столько мнений. Лично мне казалось, что как раз идея начать руководство с примера сеанса отладки несложной программы и дает возможность оценить что к чему. А ведь бывает, иные руководства начинаются с перечня команд... :)

AM>> А известны примеры успешного изготовления? Это я к тому, стоит AM>> ли тратить время, экспериментировать, или проще (и надежнее) сразу AM>> купить?

HZ> Разумеется, проще и надежнее купить. :) Hо дороже. Сам я не HZ> пользовался, мне не надо, я сейчас больше на 430-х, а там все это от HZ> рождения есть и адаптер значительно более простой и открыт был с HZ> самого начала.

Я вот все собираюсь-собираюсь с 430-ми познакомиться, да все что-то накак. А надо бы, надо...

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Без тpуды не выкачаешь почту из фиды...

Thu, 06 Nov 2003 00:13:30 +0300 Alex Mogilnikov wrote to Harry Zhurov:

[...]

HZ>> так?! А как иначе?

AM> У меня сообщает:

AM> (gdb) si

AM> Program received signal SIGILL, Illegal instruction. AM> 0x00000000 in __vectors () AM> (gdb)

Во, так нормально.

AM> То есть симулятор выдал отладчику нужную информацию. Почему у тебя это AM> выглядело как будто инструкции выполняются, не могу даже предположить.

Похоже, что морда та - недоделанная.

HZ>> А под винду это ddd имеется?

AM> Судя по наличию в его исходниках строки "WIN32" в немаленьком AM> количестве, наверное должен.

А где оно живет?

HZ>>>> Разве без этого отладка возможна?),

HZ>> Вот-вот, вот они грабли-то! Hе, горбато сделано - тут ведь не HZ>> только новичок набьет шишку, но и опытный товарисч элементарно может HZ>> не отследить, что версия устарела. Кстати, ИАРовский C-SPY этот момент HZ>> отслеживает и сообщает, что сорцы не соответствуют загруженному HZ>> объектнику, поэтому отладка может быть некорректной. Для людей HZ>> сделано. Все можно, если захотеть.

AM> А по какому протоколу он с таргетом работает? Какой-то свой AM> собственный?

Да, там у них свой. У них многое свое, в т.ч. и формат объектника, который позволяет помещать каждую функцию в отдельный сегмент, т.ч. при сборке окончательного файла, линкуются только те функции, на которые есть ссылка. Таким образом, ничего лишнего в исполняемом нет. С avr-gcc я столкнулся с тем, что там линкуются все функции из файла, если хотя бы на одну из них была ссылка.

[...]

HZ>> Может, она и есть. Hо в том комплекте ее не было.

AM> Тут ИМХО есть единственный вариант - скачивай штатный дистрибутив AM> (поскольку, как я понял, ты взял уже собранный кем-то третьим). Если доки AM> там все-таки есть, замечательно, значит сборщик-редиска их зачем-то AM> выкинул. Если нет - не повезло значит.

Может и редиска, может и морковка. Какая разница. Брал-то я это на, как бы, официальном сайте проекта winavr. Там не один человек этим занимается, а целая команда, и работу проделали немаленькую. Но все равно недоделанное.

AM>>> Речь-то о симуляторе, а не gdb. С ним я познакомился два дня AM>>> назад. Три уже. :)

HZ>> А что, раньше ты про gdb ничего не знал? Что-то с трудом верится, HZ>> зная твой опыт в gcc'ной кухне...

AM> Я раньше ничего не знал о simulavr. С симуляторами, встроенными прямо в AM> gdb, обсуждаемых нами граблей ИМХО быть просто не может. Hапример, ARM7 gdb AM> сам умеет симуляровать.

Так я не пойму - ты именно gdb (его интерфейсом) пользуешься или тем front-end'ом ddd?

AM>>> Объем, действительно, не маленький, но зато разжевано AM>>> достаточно подробно, с примерами.

HZ>> Этот объем сильно грузит мозги начинающему и мешает сделать HZ>> простую вещь - просто попробовать для начала, чтобы оценить, что к HZ>> чему. А это очень важная вещь.

AM> Может быть, может быть. Сколько людей, столько мнений. Лично мне AM> казалось, что как раз идея начать руководство с примера сеанса отладки AM> несложной программы и дает возможность оценить что к чему.

Вот и я так же считаю. Но когда хочется попробовать самому слепить что-то, то на gcc с нуля это сделать быстро не получается (нюансиков там слишком до фига), в то время, как на иаре это делается легко (т.к. путь там значительно проще, а документации (по объему) меньше, но она толковее - возьми какой-нибудь их compiler reference guide и почитай - разницу почувствуешь сразу).

AM> А ведь бывает, иные руководства начинаются с перечня команд... :)

[...]

HZ>> Сам я не пользовался, мне не надо, я сейчас больше на 430-х, а там все это HZ>> от рождения есть и адаптер значительно более простой и открыт был с HZ>> самого начала.

AM> Я вот все собираюсь-собираюсь с 430-ми познакомиться, да все что-то AM> накак. А надо бы, надо...

А ты только начни - потом не остановишься. Там все очень просто и понятно. Я вот однажды (года два назад) взял в выходной день, скачал User's Guide на MSP430x1xx и прочитал его (там страниц 500, но написано очень понятно, структурировано, много схем, графиков), т.ч. представление формируется сразу и безошибочное. Там один файл на всю линейку, в котором вся необходимая информация, а даташиты на конкретные чипы - очень небольшие - содержат только конкретную информацию, характерную для этого чипа (таблицы с параметрами, графики зависимостей и проч.) - это очень удобно (в противоположность к тому, как сделано для AVR, когда на каждый кристалл дока страниц на 350-400, причем доки почти одинаковые, отличаются мелочами - вот и ищи эти различия; неудобно).

Да, и сам процессор там более процессор - проще он и стройнее, более классический, чем avr. И gcc на него (по слухам) более хорошо ложится, я даже скачивал какой-то, версию не помню (Лев Серебряков делал пакет), должен признать - кодогенерация там на высоте. Ну, и внутрисхемная отладка тоже не последнее дело.

Привет Harry!

07 Nov 03 11:14, Harry Zhurov писал Alex Mogilnikov:

HZ>>> А под винду это ddd имеется?

AM>> Судя по наличию в его исходниках строки "WIN32" в немаленьком AM>> количестве, наверное должен.

HZ> А где оно живет?

formatting link
AM>> Тут ИМХО есть единственный вариант - скачивай штатный AM>> дистрибутив (поскольку, как я понял, ты взял уже собранный кем-то AM>> третьим). Если доки там все-таки есть, замечательно, значит AM>> сборщик-редиска их зачем-то выкинул. Если нет - не повезло значит.

HZ> Может и редиска, может и морковка. Какая разница. Брал-то я это HZ> на, как бы, официальном сайте проекта winavr.

Мне кажется, что документацию на insight логично искать на официальном сайте проекта indight, а не какого-то winavr. Какое он вообще имеет отношение к insight?

AM>> Я раньше ничего не знал о simulavr. С симуляторами, AM>> встроенными прямо в gdb, обсуждаемых нами граблей ИМХО быть просто AM>> не может. Hапример, ARM7 gdb сам умеет симуляровать.

HZ> Так я не пойму - ты именно gdb (его интерфейсом) пользуешься или HZ> тем front-end'ом ddd?

Я пользуюсь ddd, но среди прочих окон у него есть gdb-консоль, что позволяет отдавать команды gdb напрямую. Часто бывает удобно.

HZ>>> Этот объем сильно грузит мозги начинающему и мешает сделать HZ>>> простую вещь - просто попробовать для начала, чтобы оценить, что HZ>>> к чему. А это очень важная вещь.

AM>> Может быть, может быть. Сколько людей, столько мнений. Лично AM>> мне казалось, что как раз идея начать руководство с примера сеанса AM>> отладки несложной программы и дает возможность оценить что к чему.

HZ> Вот и я так же считаю. Hо когда хочется попробовать самому слепить HZ> что-то, то на gcc с нуля это сделать быстро не получается

? При чем тут опять gcc? Мы вроде бы говорим об отладчике gdb. У него руководство как раз начинается с примера сеанса отладки...

AM>> Я вот все собираюсь-собираюсь с 430-ми познакомиться, да все AM>> что-то накак. А надо бы, надо...

HZ> А ты только начни - потом не остановишься. Там все очень просто и HZ> понятно. Я вот однажды (года два назад) взял в выходной день, скачал HZ> User's Guide на MSP430x1xx и прочитал его

Hайду время - так и сделаю. Если что - знаю кому вопросы можно задать. :)

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Искать смысл - бессмысленно...

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required