#arm #gdb #gdbserver #openocd #contiki-ng
Вопрос:
Я пытаюсь отладить приложение contiki-ng, работающее на плате LaunchPad CC1312r1, с использованием OpenOCD. Когда я добавляю точку останова в строку в исходном файле, gdb неправильно определяет номер строки.
(gdb) b packet-send.c:34
Breakpoint 1 at 0x14d46: file ../seneco/communication/udp/packet-send.c, line 60.
Я написал небольшое демонстрационное приложение, и оно работает правильно, но я не могу получить правильные номера строк в приложении, которое я должен отлаживать.
(gdb) b my-cng-example.c:57
Breakpoint 1 at 0xa072: file my-cng-example.c, line 57.
Я попытался скомпилировать на своем родном КОМПЬЮТЕРЕ и с помощью образа докера contiki-ng. Я пробовал gdb-multiarch и arm-none-eabi-gdb. Я использую репозиторий TI для OpenOCD, который поддерживает панель запуска CC1312r1.
Отладчик сообщает о следующих флагах компилятора:
(gdb) info source
Current source file is ../seneco/communication/udp/packet-send.c
Compilation directory is /home/david/gitlab/seneco-contiki-ng/seneco
Located in /home/david/gitlab/seneco-contiki-ng/seneco/communication/udp/packet-send.c
Contains 65 lines.
Source language is c.
Producer is GNU C99 9.2.1 20191025 (release) [ARM/arm-9-branch revision 277599] -mcpu=cortex-m4 -mthumb -mabi=aapcs -mlittle-endian -mfloat-abi=soft -march=armv7e-m -g -O0 -Os -std=c99 -fno-common -ffunction-sections -fdata-sections -fno-strict-aliasing -fshort-enums -fomit-frame-pointer -fno-builtin.
Compiled with DWARF 2 debugging format.
Does not include preprocessor macro info.
Ответ №1:
Строки, на которых я пытался установить точки останова, были удалены определениями препроцессора. gdb просто устанавливает точку останова в следующей допустимой строке.