0

我在 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,源查找路径是默认值。

请问有什么想法吗?

4

1 回答 1

0

正如 nm 所解释的,解决方案是在调试配置中添加 LD_LIBRARY_PATH 环境变量,设置为构建库的路径。

在此处输入图像描述

于 2014-01-15T11:00:50.113 回答