告诉gdb跳过标准文件

War*_*ine 12 c++ gdb

我正在使用GDB调试C++代码,当它进入包含标准库对象的某个对象的构造函数时,它会向我显示这些对象的构造函数(如std::map)和下面的所有内容.

我知道next运算符,但我更喜欢基本上黑名单任何标准库代码,这从来不是我正在调查的错误的来源.希望的行为是,一个简单的skip将发送给我下一个"用户土地"代码.

mat*_*att 11

* GDB 7.4的变化

  • GDB现在允许您在使用"跳过功能"和"跳过文件"命令进行步进时跳过不感兴趣的函数和文件.


Dhi*_*ddy 8

gdb 7.12支持文件通配以指定要在调试器中跳过的文件.相同的文档如下:

https://sourceware.org/gdb/onlinedocs/gdb/Skipping-Over-Functions-and-Files.html

要跳过目录/ usr/include/c ++/5/bits中的所有库头,请将以下行添加到〜/ .gdbinit

# To skip all .h files in /usr/include/c++/5/bits
skip -gfi /usr/include/c++/5/bits/*.h
Run Code Online (Sandbox Code Playgroud)

而不是跳过特定文件,例如stl_vector.h,将以下行添加到〜/ .gdbinit

# To skip the file /usr/include/c++/5/bits/stl_vector.h
skip file /usr/include/c++/5/bits/stl_vector.h
Run Code Online (Sandbox Code Playgroud)

使用gdb 7.11及更低版本执行上述操作会导致以下错误:

Ignore function pending future shared library load? (y or [n]) [answered N; input not from terminal]
Run Code Online (Sandbox Code Playgroud)

但是,gdb 7.12似乎已经解决了上述问题.

博客解决了gdb版本7.11或更低版本的相同问题.

- 您可以使用gdb命令提示符中的以下命令列出标记为跳过的所有文件

info skip
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

4196 次

最近记录:

7 年,8 月 前