|
WinAVR + Code::Blocks - отладка, как работать в этой связке с GDB? |
|
|
|
Oct 11 2008, 09:48
|

Профессионал
    
Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581

|
Заинтересовался Code::Blocks, как альтернативе AVR Studio. Привлекает бесплатность и универсальность. Особенно обрадовался наличию поддержки отладки... однако, с GDB никогда никаких дел не имел, вообще смутно представляю, как можно отлаживать в консольном режиме... Судя по всему, Code::Blocks обеспечивает GUI для GDB, однако, не смотря на то, что компиляция происходит, отладка не получается - выводится месседж типа "неизвестно, что отлаживать" - и отладчик завершает работу. Кроме того, упорно компилирует сначала avr-gcc.exe, а потом avr-g++.exe, хотя проект на чистом Си... В итоге получается, скорее всего, что-то не то... makefile тоже в папке проекта нет... Установил опцию "создавать lss" - но листинг не создается...
В общем, если кто может помочь - отзовитесь!
--------------------
Я бы взял частями... но мне надо сразу.
|
|
|
|
|
 |
Ответов
(1 - 10)
|
Oct 12 2008, 11:45
|

фанат Linux'а
    
Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008

|
Цитата(ARV @ Oct 11 2008, 13:48)  Заинтересовался Code::Blocks, как альтернативе AVR Studio. Привлекает бесплатность и универсальность. Особенно обрадовался наличию поддержки отладки... однако, с GDB никогда никаких дел не имел, вообще смутно представляю, как можно отлаживать в консольном режиме... Судя по всему, Code::Blocks обеспечивает GUI для GDB, однако, не смотря на то, что компиляция происходит, отладка не получается - выводится месседж типа "неизвестно, что отлаживать" - и отладчик завершает работу. Я делаю так: Создаю два скриптика - один заливает прогу во флэш и проверяет как записалось + GDB стартует: avarice -j /dev/ttyUSB0 -e -f ./hex/ig.elf.hex -P atmega16 -p -v :4242 второй просто проверяет что то что во флэше то что нужно и запускает GDB сервер (чтобы флэш не марать если программа не изменилась): avarice -j /dev/ttyUSB0 -f ./hex/ig.elf.hex -P atmega16 -v :4242 Далее в среде CodeBlocks меню Project-Properties-Debugger-Remote debugging support (GDB only) пишу для каждой target Connection type: TCP IP address: 127.0.0.1 - так как на этом же компьютере и запускаю отладку Port: 4242 - потому что в своих скриптиках я указал чтобы GDB сервер висел именно на этом порте (:4242) Сначала запускаю один из скриптов и вижу что GDB ожидает соединение. Затем запускаю в CodeBlocks Debug-Start и понеслась  В итоге получается удобная отладка прямо в тексте программы, происходящая непосредственно в среде CodeBlocks, которая мало чем отличается от отладки программы для windows/Linux. Всё что я описал я пробовал под Linux, как под маздай не знаю, но по идее должно работать и там... Мой программатор USB-JTAG-ICE, поэтому я воспользовался программой avarice - она поддерживает много программаторов под разными ОС. Если программатор другой - достаточно запустить avarice --help и найти какие ключи подавать чтобы работать с конкретным программатором-отладчиком... Если будут вопросы - пиши.
--------------------
|
|
|
|
|
Oct 12 2008, 14:29
|

фанат Linux'а
    
Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008

|
Цитата(ARV @ Oct 12 2008, 18:02)  я так понимаю, речь идет о внутрисхемной отладке? меня же пока больше волнует симуляция, т.е. отладка без кристалла... это возможно? Да, вполне возможно, однако такая симуляция будет ещё более убогой чем даже в AVR Studio... [оффтоп] Лично я уже давно пришел к выводу, что симуляция это прошлый век и никогда не заменит реальной системы... Сегодня даже самый микроскопический проц имеет поддержку внутрисхемной отладки (например 8-ми выводные ATtiny можно отлаживать через debug wire в том же самом CodeBlocks например. А для AVR отладочная плата изготавливается за час...[/оффтоп] Но если всё же заинтересовало, то: http://www.oshec.org/articles/otladka-avr-...-avr-pod-linuh/В данном случае, вместо DDD (на мой взгляд неудобной красноглазой программы) можно использовать CodeBlocks... Там правда под Linux, но наверняка эта программа-симулятор есть и под windows - работает как GDB сервер тоже... Сам её не проверял, но предполагаю, что возможности у неё ограничены по сравнению с внутрисхемной отладкой
--------------------
|
|
|
|
|
Oct 12 2008, 20:25
|

Профессионал
    
Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581

|
запускаю simulavr: Код simulavr -d atmega8 -g запускается, но в начале выводит подозрительную информацию: Код 4 [main] simulavr 3764 dll_crt0_1: internal error: couldn't determine location of thread function on stack. Expect signal problems. после этого ждет подключения GDB на порту по умолчанию (localhost:1212 - как в доке к simulavr) когда из Code::Block запускаю отладку, то simulavr вылетает... напоследок пишет следующее: Код Connection opened by host 127.0.0.1, port 2357. 126486578 [main] simulavr 3764 _cygtls::handle_exceptions: Exception: STATUS_ACCESS_VIOLATION 126487228 [main] simulavr 3764 open_stackdumpfile: Dumping stack trace to simulavr.exe.stackdump 126499358 [main] simulavr 3764 _cygtls::handle_exceptions: Exception: STATUS_ACCESS_VIOLATION 126499877 [main] simulavr 3764 _cygtls::handle_exceptions: Error while dumping state (probably corrupted stack) после этого создается дамп-файл... в общем, нарушение прав доступа к памяти, как я понимаю...
--------------------
Я бы взял частями... но мне надо сразу.
|
|
|
|
|
Oct 14 2008, 10:11
|

фанат Linux'а
    
Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008

|
Цитата(ARV @ Oct 13 2008, 23:39)  сборку simulavr под винду я не нашел свежее, чем внутри WinAVR, все сплошь линух... мне посоветовали поискать дубли cygwin1.dll - и действительно, я нашел 2 в разных папках, прописанных в path: от WinAVR и от Lazarus... только никакие манипуляции с ними не помогли. а когда я скачал самую последню версию cygwin1.dll - вообще отказался запускаться из-за несоответствия версий dll... такие вот дела... Свежую версию можно самому скомпилировать из репозитория этого проекта ^_^ Как вариант, можно попробовать поменять себе операционную систему (а почему бы и нет, Linux можно с чистой совестью скачать и установить). Но одно остается непонятным: откуда стремление найти аналог AVR Studio? Тем, кто переходит на Linux это просто необходимо, так как использовать IAR или AVR Studio может быть проблематично.
--------------------
|
|
|
|
|
Oct 14 2008, 14:42
|

Профессионал
    
Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581

|
Цитата(AVR @ Oct 14 2008, 14:11)  Свежую версию можно самому скомпилировать из репозитория этого проекта ^_^ Как вариант, можно попробовать поменять себе операционную систему (а почему бы и нет, Linux можно с чистой совестью скачать и установить). Но одно остается непонятным: откуда стремление найти аналог AVR Studio? Тем, кто переходит на Linux это просто необходимо, так как использовать IAR или AVR Studio может быть проблематично. собрать самому? это значит, скачать и установить GCC для Win32, потом только собрать... это лишняя морока. Стремление (не сильное) уйти с AVR Studio обусловлено бедными возможностями ее редактора текстов. Хочется комфортма, как в Delphi или NetBeans... но, судя по всему из-за отсутствия симуляции (необходимой для поиска ошибок в программе) придется с этой идеей распрощаться... ну, а пользоваться крякнутыми IAR-ами и т.п. как-то уже не модно  хочется постепенно стать честным  перейти на линух? это вообще равносильно смене пола... почему-то хочется покоя
Сообщение отредактировал ARV - Oct 14 2008, 14:43
--------------------
Я бы взял частями... но мне надо сразу.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|