我正在使用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文件。
发布于 2011-06-11 05:37:12
gdb是可脚本化的。它有while,if,变量,shell子命令,用户自定义函数(定义)等,它有脚本化的python接口。
只需做一点工作,就可以按照以下方式编写gdb脚本:
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
或者找出是否有人已经写了这样的脚本
发布于 2011-06-11 05:23:17
代替执行s(步骤),您可以
B在函数的第一行要停止的位置(b::method或b file.cpp:line),
然后是c。
gdb将绕过boost代码,并在b中给出的点(您想要它的位置)中断。
这是可行的,但看起来很单调乏味。这是习惯的问题。随着重复而变得更容易。
msvc的行为类似于gdb。
发布于 2019-01-05 23:07:19
来自https://stackoverflow.com/a/31629136/5155476
我也有同样的需求。我扩展了gdb中的“跳过”命令,以支持新类型“dir”。我现在可以在gdb中做到这一点:
skip dir /usr
然后我从来没有停止在任何我的第三方标题。
这里有一个网页,上面有这个信息和补丁,如果它对任何人有帮助的话:info & patch to skip directories in GDB
https://stackoverflow.com/questions/6219223
复制相似问题