Я пытаюсь удаленно отлаживать приложение с помощью командной строки GDB. Путь, в котором gdb запущен на ПК, - это путь сборки приложения. Он содержит amixer
исполняемый файл и amixer.c
.Удаленная отладка GDB - не может подключиться к исходному файлу, но ошибки не печатаются
Код составлен с параметрами -g -O2
.
отладочной, кажется, присутствуют:
$ readelf -WS amixer
There are 38 section headers, starting at offset 0x1d24c:
...
[27] .debug_aranges PROGBITS 00000000 00a758 000140 00 0 0 8
[28] .debug_info PROGBITS 00000000 00a898 008c59 00 0 0 1
[29] .debug_abbrev PROGBITS 00000000 0134f1 00085a 00 0 0 1
[30] .debug_line PROGBITS 00000000 013d4b 001a8c 00 0 0 1
[31] .debug_frame PROGBITS 00000000 0157d8 000494 00 0 0 4
[32] .debug_str PROGBITS 00000000 015c6c 001f75 01 MS 0 0 1
[33] .debug_loc PROGBITS 00000000 017be1 004dff 00 0 0 1
[34] .debug_ranges PROGBITS 00000000 01c9e0 000700 00 0 0 1
шаги на удаленном устройстве (раздели бинарной):
gdbserver 192.16.6.21:12345 amixer
шаги на ПК (двоичная здесь не удалялись):
$ gdb amixer
(gdb) set sysroot /correct/path/to/remote/device/sysroot
(gdb) target remote 192.16.6.12:12345
(gdb) break main
Breakpoint 1 at 0x11f58
(gdb) list main
(gdb) show directories
Source directories searched: $cdir:$cwd
(gdb) continues
...program executes on remote device...
Предположения, которые я сделал:
break main
не выдает ошибки, поэтому доступны исполняемые символы отладки. Я бы ожидал увидеть исходный файл, упомянутый здесь уже. Как и в example:Breakpoint 1 at 0x62f4: file builtin.c, line 879.
- есть на выходе
readelf -WS amixer
.debug*
так отладочные символы присутствуют list main
не перечисляет источник основной функции. Что-то не такshow directories
список$cdir
и$cwd
Я предполагаю, по крайней мере, из них каталог, из которого я началgdb amixer
и это каталог для сборки с обеих исполняемых файлов и источников
Я, очевидно, что-то не так, поэтому я ищу обзор предположений и советов по отладке.
Есть ли 'addr2line -a 0x11f58 -e/correct/path/to/amixer-with-debug-info' показывает имя файла и номер строки? –