我在 Github 上创建了一个使用 autotools 的 C 项目。在使用调试选项构建它之后,按照William Pursell 的帖子,我无法进入某些功能。调试器说:“没有调试信息”。
这是我的构建过程:
$ ./autogen.sh
$ mkdir Debug
$ cd Debug
$ ../configure --prefix=/Debug CPPFLAGS=-DDEBUG CFLAGS="-O0 -g3 -Wall"
$ make
$ make check
有关信息,源代码树有两级文件夹:perfo/、src/、src/core/、src/utils/、tests/ 等。
当我调试tests/xxx 时,我在tests/xxx.c 中有函数符号,但没有src/core/global.c 中的符号。
根据此处的信息,我尝试检查目标文件,但它们看起来具有相同的调试信息属性。
$ readelf -WS tests/reqrep.o | grep debug_info
[ 6] .debug_info PROGBITS 0000000000000000 00118a 000735 00 0 0 1
[ 7] .rela.debug_info RELA 0000000000000000 00d5d0 000d20 18 25 6 8
$ readelf -WS src/core/global.o | grep debug_info
[ 6] .debug_info PROGBITS 0000000000000000 002d87 002360 00 0 0 1
[ 7] .rela.debug_info RELA 0000000000000000 01ccb8 003180 18 25 6 8
我正在使用 Eclipse CDT 进行调试。调试构建配置文件是相同的。例如,如果我通过控制台从头开始重建,Eclipse CDT 在调试时不会重建,因为它是最新的。当然,我尝试过从控制台构建和 Eclipse 构建进行调试。Debug 配置看起来不错:application = Debug/tests/.libs/reqrep,使用 GDB (DSF) 和非停止模式,构建配置是 Debug,源查找路径是默认值。
请问有什么想法吗?