我认为这可能早先被问过,但我找不到满足我要求的那个。
我正在通过尝试分析各种测试套件中的代码流来调试(实际上是试图理解)一个大型项目。但是当我尝试在某些文件中设置断点时,我收到错误“找不到名为filename的源文件” 所以我的问题是:
b filename:*
任何见解都非常受欢迎。
修改的
我用一些hello world代码检查了这些问题,并找到了其中一个答案中指出的相同结果。但我在实际项目中的问题仍然存在。即使我可以看到同一行的编辑输出不被接受为断点,我仍然会得到相同的错误。
编辑2
我得到了它的工作,但不明白它是如何以及为什么工作.. ??
(gdb) b /home/neeraj/BTP/trunk/include/header.h:872
No source file named /home/neeraj/BTP/trunk/include/header.h:872
Make breakpoint pending on future shared library load? (y or [n]) n
(gdb) b /home/neeraj/BTP/trunk/src/driver.cpp:2
Breakpoint 1 at 0x806c61a: file ../../../trunk/src/driver.cpp, line 2.
(gdb) b /home/neeraj/BTP/trunk/include/header.h:872
Breakpoint 2 at 0x8052fa0: file ../../../trunk/include/header.h:872, line 872.
(gdb)
任何更深入的见解......?
答案 0 :(得分:8)
确保使用-g(调试)选项进行编译。确保正确设置了源路径。使用directory,show directories和dir命令来查看/设置。
答案 1 :(得分:6)
除了共享库之外,要注意的另一件事是gdb
源文件名是相对于编译代码的目录。如果尚未使用绝对路径名编译,请使用dir
命令将编译目录添加到位置列表gdb
中搜索源代码。
并提示:当我使用Data Display Debugger (DDD)图形前端gdb
时,我发现自己的效率大大提高。