【问题标题】:Not able to set breakpoints in gdb无法在 gdb 中设置断点
【发布时间】:2014-09-22 13:36:50
【问题描述】:

我的C++项目文件夹结构如下图。

我正在尝试在我的 linux 机器上使用 gdb 调试程序。我的主要功能在 g2o_cli 文件夹中的 g2o.cpp 中。我可以通过

在此文件夹中的文件中放置断点
 break g2o.cpp:<line_number>

但我无法在其他文件夹中的文件中放置断点,例如“core”文件夹中的文件 optimizer.cpp。我尝试给出我的主目录的绝对路径

break ~/HOME/g2o/core/optimizer.cpp:<line_number>

但它给出了一个错误

  No source file named ~/HOME/g2o/core/optimizer.cpp

我还尝试了 ../../core/optimizer.cpp 而不是绝对路径。还是不行。

我看到了一个类似的问题here。但答案中提到的任何可能原因均不适用于我的情况。文件 optimizer.cpp 不是共享库,整个 project 是使用 cmake 编译的。

gdb 如何获取文件夹路径?如何提供相对文件夹路径?

【问题讨论】:

  • 你试过break optimizer.cpp:&lt;line_number&gt;吗?
  • @tohava 是的..我先试过了。它也说同样的错误。
  • 您可以在运行 gdb 之前尝试将文件夹添加到您的路径中。我知道这只是一种解决方法,但可能值得一试以弄清楚发生了什么。
  • 如果只使用基本名称不起作用(“break optimizer.cpp:NNN”),那么我怀疑该文件未链接,或者未使用调试信息编译。
  • 你的主目录真的有一个名为HOME的子目录吗?

标签: c++ linux gdb breakpoints


【解决方案1】:

您可以在 x86 上使用的一个肮脏技巧是使用 int3。只需在需要断点的代码中使用语句asm volatile ("int 3");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-26
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    • 2018-12-15
    • 2012-03-29
    相关资源
    最近更新 更多