无法设置gdb断点

时间:2013-11-28 18:29:42

标签: c++ debugging gdb

我使用多个C ++文件处理程序。我已经通过gdb运行可执行文件来调试分段错误。之后,gdb backtrace在分段错误之前提供了功能列表。后来,我尝试在特定行号的文件中设置断点。 (指定的路径是绝对路径)

(gdb) break /aia/r015/home/sathish/zfs_amr/src/zfslbminterfaced2q9.cpp:100

但是,gdb提供以下消息:

No source file named /aia/r015/home/sathish/zfs_amr/src/zfslbminterfaced2q9.cpp.

但是,这个位置确实存在。这个消息到底意味着什么?

1 个答案:

答案 0 :(得分:1)

  

这个消息到底意味着什么?

该消息表示GDB不知道任何名为/aia/r015/home/sathish/zfs_amr/src/zfslbminterfaced2q9.cpp的源文件。

情况可能有多种原因:

  • 缺少此文件的调试信息,因为该文件是在没有-g的情况下编译的,或者是因为调试信息(可能无意中)在以后被剥离了,
  • 上述路径中有一些符号链接,GDB通过完全解析的路径名来识别该文件,
  • 该文件实际上根本没有链接到可执行文件中,
  • 共享库的文件部分以及该共享库的符号尚未加载,

正如Pat建议的那样,在zfslbminterfaced2q9.cpp:100上设置断点更有可能奏效。

如果这不起作用,info sources将告诉您GDB 知道哪些文件。

更新

  

info sources给出空白

这意味着应用程序根本没有任何调试信息

通常这种情况有两个原因:

  • 您忽略了在链接行上指定-g(某些平台在编译和链接时都需要-g),
  • 您的链接线上有一个“迷路”-s(剥离了最终的可执行文件)。