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

 
 
> WinAVR + Code::Blocks - отладка, как работать в этой связке с GDB?
ARV
сообщение Oct 11 2008, 09:48
Сообщение #1


Профессионал
*****

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



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

В общем, если кто может помочь - отзовитесь!


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 10)
AVR
сообщение Oct 12 2008, 11:45
Сообщение #2


фанат 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 и понеслась smile.gif

В итоге получается удобная отладка прямо в тексте программы, происходящая непосредственно в среде CodeBlocks, которая мало чем отличается от отладки программы для windows/Linux. Всё что я описал я пробовал под Linux, как под маздай не знаю, но по идее должно работать и там...

Мой программатор USB-JTAG-ICE, поэтому я воспользовался программой avarice - она поддерживает много программаторов под разными ОС. Если программатор другой - достаточно запустить avarice --help и найти какие ключи подавать чтобы работать с конкретным программатором-отладчиком...

Если будут вопросы - пиши.


--------------------
Go to the top of the page
 
+Quote Post
ARV
сообщение Oct 12 2008, 14:02
Сообщение #3


Профессионал
*****

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



я так понимаю, речь идет о внутрисхемной отладке? меня же пока больше волнует симуляция, т.е. отладка без кристалла... это возможно?


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
AVR
сообщение Oct 12 2008, 14:29
Сообщение #4


фанат 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 сервер тоже... Сам её не проверял, но предполагаю, что возможности у неё ограничены по сравнению с внутрисхемной отладкой smile.gif


--------------------
Go to the top of the page
 
+Quote Post
ARV
сообщение Oct 12 2008, 19:39
Сообщение #5


Профессионал
*****

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



установил WinAVR-20080610, в ней уже имеется simulavr.
как я понимаю, этот симулятор может работать с gdb. но у меня происходят ошибки: когда gdb подключается к simulavr, последний вылетает. при этом пишет, что STATUS_ACCESS_VIOLATION.

может ли кто-нибудь прояснить ситуацию?


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
AVR
сообщение Oct 12 2008, 20:15
Сообщение #6


фанат Linux'а
*****

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



Цитата(ARV @ Oct 12 2008, 23:39) *
может ли кто-нибудь прояснить ситуацию?
К сожалению, не обладаю телепатическими способностями, поэтому хотелось бы больше информации: какие команды набирались, что выводилось и т.д. ... smile.gif


--------------------
Go to the top of the page
 
+Quote Post
ARV
сообщение Oct 12 2008, 20:25
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 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)


после этого создается дамп-файл... в общем, нарушение прав доступа к памяти, как я понимаю...


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
AVR
сообщение Oct 13 2008, 18:26
Сообщение #8


фанат Linux'а
*****

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



Да, возможно что-то не так с simulavr... Попробуйте скачать отдельно от WinAVR самую распоследнюю версию...


--------------------
Go to the top of the page
 
+Quote Post
ARV
сообщение Oct 13 2008, 19:39
Сообщение #9


Профессионал
*****

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



сборку simulavr под винду я не нашел свежее, чем внутри WinAVR, все сплошь линух... мне посоветовали поискать дубли cygwin1.dll - и действительно, я нашел 2 в разных папках, прописанных в path: от WinAVR и от Lazarus... только никакие манипуляции с ними не помогли. а когда я скачал самую последню версию cygwin1.dll - вообще отказался запускаться из-за несоответствия версий dll... такие вот дела...


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
AVR
сообщение Oct 14 2008, 10:11
Сообщение #10


фанат 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 может быть проблематично.


--------------------
Go to the top of the page
 
+Quote Post
ARV
сообщение Oct 14 2008, 14:42
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 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-ами и т.п. как-то уже не модно smile.gif хочется постепенно стать честным smile.gif

перейти на линух? это вообще равносильно смене пола... почему-то хочется покоя smile.gif

Сообщение отредактировал ARV - Oct 14 2008, 14:43


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 06:59
Рейтинг@Mail.ru


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