gdb — НТЦ Метротек. Архив блога http://blog.metrotek.spb.ru заметки бывших разработчиков бывшего НТЦ Метротек Thu, 02 Oct 2025 13:52:15 +0000 ru-RU hourly 1 https://wordpress.org/?v=5.1.15 vim и gdb http://blog.metrotek.spb.ru/2010/06/25/otladka-priborov-pryamo-v-vime/ http://blog.metrotek.spb.ru/2010/06/25/otladka-priborov-pryamo-v-vime/#comments Fri, 25 Jun 2010 12:02:29 +0000 http://blog.metrotek.spb.ru/?p=2176 Долгое время мы не использовали отладчик при разработке приборов, отдавая предпочтение аналитическому методу — долгому «всматриванию» в код. Но при разработке нового прибора мы все-таки решили попробовать использовать ARM-USB-OCD, и нам понравилось! Прибор прошивается за 5 секунд, можно посмотреть все действия по шагам. Теперь не нужно гадать, в каком треде прибор вываливается в сегфолт.

Но чтобы удовольствие от отладки было полным, мы решили прикрутить gdb к vim’у. В этом нам помог проект Clewn.

Последовательность действий такова:

  1. Подключаем прибор к компьютеру через ARM-USB-OCD и запускаем утилиту openocd на этом компьютере.
  2. Запускаем gdb и vim:
    clewn -gc arm-elf-gdb -ga <путь-к-elf-файлу>
    Появляется GDB-shell и открывается gvim.
  3. Присоединяемся к openocd:
    (gdb) target remote :3333
  4. Прошиваем прибор нужной прошивкой:
    (gdb) load <путь-к-elf-файлу>

Все готово для отладки. Теперь можно открывать в gvim исходники, ставить breakpoint’ы, смотреть значения переменных и наблюдать за текущем местом выполнения. Список горячих клавиш описан в документации Clewn и, естественно, может модифицироваться.

]]>
http://blog.metrotek.spb.ru/2010/06/25/otladka-priborov-pryamo-v-vime/feed/ 5
Использование внутрисхемного отладчика AVR http://blog.metrotek.spb.ru/2009/02/04/onchip-debugging/ Wed, 04 Feb 2009 15:44:24 +0000 http://blog.metrotek.spb.ru/?p=421 JTAGICE mkII В микроконтроллерах ATmega AVR, естественно, есть возможность внутрисхемной отладки по JTAG. Мы используем девайс под названием AVR JTAGICE mkII, подключённый по USB. Если по коду ошибку найти не удалось, то приходится отлаживать так же, как и обычную десктоп-программу. То есть, использовать дебаггер на «большом» компьютере, а программа будет выполняться в железке. Чтобы начать отладку, запускаем на хосте, в который воткнут JTAGICE, gdb-сервер командой avarice -j usb -2 :4343. Естественно, что в MCU должна быть предварительно залита отлаживаемая прошивка.

Затем запускаем DDD, ddd --debugger avr-gdb, после чего подключаемся к серверу, выполнив в консоли DDD команду target remote localhost:4343, открываем отлаживаемый файл в DDD. И, вуаля, можно пошагово выполнять программу прямо в железяке.

Те, кто не любит DDD, могут использовать avr-gdb и наслаждаться command-line интерфейсом.

]]>