C++ GDB中的断点
我想这可能早就被问到了,但我找不到一个能满足我要求的 我正在调试(实际上是试图理解)一个大型项目,试图分析各种测试套件中的代码流。但是,当我尝试在某些文件上设置断点时,会出现错误“找不到名为filename的源文件”。C++ GDB中的断点,c++,gdb,C++,Gdb,我想这可能早就被问到了,但我找不到一个能满足我要求的 我正在调试(实际上是试图理解)一个大型项目,试图分析各种测试套件中的代码流。但是,当我尝试在某些文件上设置断点时,会出现错误“找不到名为filename的源文件”。 所以我的问题是: gdb只能接受代码流进入的源文件的断点吗 我是否可以使用类似b filename:: 头文件处的断点是否会被接受,因为头文件只是在编译时附加的 任何见解都是非常受欢迎的 编辑 我用一些hello world代码检查了这些问题,发现了与其中一个答案中指出的相同的结
所以我的问题是:
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)
(gdb)b/home/neeraj/BTP/trunk/include/header.h:872
没有名为/home/neeraj/BTP/trunk/include/header的源文件。h:872
是否在将来加载共享库时使断点挂起?(y或[n])n
(gdb)b/home/neeraj/BTP/trunk/src/driver.cpp:2
0x806c61a处的断点1:file../../../trunk/src/driver.cpp,第2行。
(gdb)b/home/neeraj/BTP/trunk/include/header.h:872
断点2位于0x8052fa0:file../../../trunk/include/header.h:872,第872行。
(gdb)
有更深刻的见解吗
没有
没有
对
确保使用-g(debug)选项编译。确保SourcePath设置正确。使用directory、show directories和dir命令查看/设置。除了共享库之外,还要注意的另一件事是gdb
源文件名与编译代码的目录相关。如果没有使用绝对路径名编译,请使用dir
命令将编译目录添加到位置列表gdb
搜索源代码
还有一个提示:当我使用图形前端来gdb
注意共享库时,我发现我的工作效率大大提高。您可能希望在加载任何共享库后尝试设置断点。对于最常见的情况:在main上放置一个断点,运行程序,然后(在main中设置一次)设置断点。@Managu感谢您的评论激发了我成功的试错努力..:汉克斯。。那很有魅力。。事实上,整个行为是由于包含路径不在要搜索的路径中。