我正在使用自定义ARM板。它使用buildroot生成所有图像。我们正在使用glibc ..我需要在C库调用内部进行调试。当我在gdb下运行代码时,使用“Set Verbose On”,它会从libc6.so中读出符号,但是当我在C库调用上保留断点(例如fork),并运行info locals / args时,它说“没有符号信息表”。
我是否需要重建GLibc或需要任何其他设置..
Reading symbols from /lib/ld-linux-armhf.so.3...done.
Loaded symbols for /lib/ld-linux-armhf.so.3
Reading symbols from /lib/libpthread.so.0...done.
warning: Unable to find libthread_db matching inferior's thread library, thread debugging will not be available.
Loaded symbols for /lib/libpthread.so.0
Reading symbols from /lib/libc.so.6...done.
Loaded symbols for /lib/libc.so.6
(gdb) bt full
#0 0x76e19af0 in fork () from /lib/libc.so.6
No symbol table info available.
#1 0x76dded80 in _IO_proc_open@@GLIBC_2.4 () from /lib/libc.so.6
No symbol table info available.
#2 0x76ddf04c in popen@@GLIBC_2.4 () from /lib/libc.so.6
我的libc.so包含所有调试符号。以下是readelf -S libc.so
的片段[71] .debug_info PROGBITS 00000000 1277e0 00106b 00 0 0 1
[72] .debug_abbrev PROGBITS 00000000 12884b 0003f7 00 0 0 1
[73] .debug_line PROGBITS 00000000 128c42 0003e2 00 0 0 1
[74] .debug_frame PROGBITS 00000000 129024 002a78 00 0 0 4
[75] .debug_str PROGBITS 00000000 12ba9c 000360 01 MS 0 0 1
[76] .debug_loc PROGBITS 00000000 12bdfc 00162a 00 0 0 1
[77] .debug_ranges PROGBITS 00000000 12d426 0000c0 00 0 0 1
[78] .shstrtab STRTAB 00000000 12d4e6 000528 00 0 0 1
[79] .symtab SYMTAB 00000000 12da10 031700 10 80 10452 4
[80] .strtab STRTAB 00000000 15f110 018ed1 00 0 0 1
答案 0 :(得分:3)
除了albfan所说的,你还需要启用BR2_ENABLE_DEBUG
来获取调试符号。
实际上,albfan所说的并不完全正确:你可以在目标中完全删除二进制文件(没有调试符号),并且只在暂存区域中保留带有调试符号的二进制文件。这在进行远程调试时特别有用。
自http://free-electrons.com/doc/training/buildroot/buildroot-slides.pdf我们的Buildroot培训以来,请点击幻灯片267以及
答案 1 :(得分:0)
http://lists.busybox.net/pipermail/buildroot/2012-May/053310.html
目标二进制文件在构建后进行条带化,从而删除调试信息。至 禁用此行为转到“构建选项” - > “二进制文件的strip命令 在目标“,并选择”无“。