首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我能阻止调试器进入Boost或STL头文件吗?

我能阻止调试器进入Boost或STL头文件吗?
EN

Stack Overflow用户
提问于 2011-06-03 03:13:27
回答 3查看 3.1K关注 0票数 24

我正在使用Qt Creator和gdb在Linux平台上调试我的C++代码。每当我使用boost::shared_ptr之类的东西时,调试器都会进入包含boost实现的头文件(即/usr/include/boost/shared_ptr.hpp)。我想在调试方面忽略这些文件,直接跳过它们。我知道只要它到达这些文件中的一个,我就可以退出,但如果不在每个调试会话中多次执行此操作,调试起来会容易得多。

我使用的是在装有QtCreator 2.2的OpenSuSE Linux11.2上运行的gcc编译器(g++) (它使用gdb作为调试器)。

编辑后添加:这个问题适用于Boost文件,但也可能适用于STL文件。

EN

回答 3

Stack Overflow用户

发布于 2011-06-11 05:37:12

gdb是可脚本化的。它有while,if,变量,shell子命令,用户自定义函数(定义)等,它有脚本化的python接口。

只需做一点工作,就可以按照以下方式编写gdb脚本:

代码语言:javascript
复制
define step-bypass-boost
  step
  while 1
    use "info source", put current source file into variable
    if source file does not match */boost/* then
        break-loop
    end
    step
  end
end

或者找出是否有人已经写了这样的脚本

票数 3
EN

Stack Overflow用户

发布于 2011-06-11 05:23:17

代替执行s(步骤),您可以

B在函数的第一行要停止的位置(b::method或b file.cpp:line),

然后是c。

gdb将绕过boost代码,并在b中给出的点(您想要它的位置)中断。

这是可行的,但看起来很单调乏味。这是习惯的问题。随着重复而变得更容易。

msvc的行为类似于gdb。

票数 0
EN

Stack Overflow用户

发布于 2019-01-05 23:07:19

来自https://stackoverflow.com/a/31629136/5155476

我也有同样的需求。我扩展了gdb中的“跳过”命令,以支持新类型“dir”。我现在可以在gdb中做到这一点:

代码语言:javascript
复制
skip dir /usr

然后我从来没有停止在任何我的第三方标题。

这里有一个网页,上面有这个信息和补丁,如果它对任何人有帮助的话:info & patch to skip directories in GDB

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6219223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档