Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ GDB中的断点_C++_Gdb - Fatal编程技术网

C++ GDB中的断点

C++ GDB中的断点,c++,gdb,C++,Gdb,我想这可能早就被问到了,但我找不到一个能满足我要求的 我正在调试(实际上是试图理解)一个大型项目,试图分析各种测试套件中的代码流。但是,当我尝试在某些文件上设置断点时,会出现错误“找不到名为filename的源文件”。 所以我的问题是: gdb只能接受代码流进入的源文件的断点吗 我是否可以使用类似b filename:: 头文件处的断点是否会被接受,因为头文件只是在编译时附加的 任何见解都是非常受欢迎的 编辑 我用一些hello world代码检查了这些问题,发现了与其中一个答案中指出的相同的结

我想这可能早就被问到了,但我找不到一个能满足我要求的

我正在调试(实际上是试图理解)一个大型项目,试图分析各种测试套件中的代码流。但是,当我尝试在某些文件上设置断点时,会出现错误“找不到名为filename的源文件”。
所以我的问题是:

  • gdb只能接受代码流进入的源文件的断点吗
  • 我是否可以使用类似
    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感谢您的评论激发了我成功的试错努力..:汉克斯。。那很有魅力。。事实上,整个行为是由于包含路径不在要搜索的路径中。