我的gdb调试器自动进入大多数功能(特别是我的外部库,标准库)。这非常烦人,因为我知道这些库的编写方式比我的代码更好。 怎么可能阻止gdb这样做呢? 感谢。
答案 0 :(得分:2)
有两种方法可以获得你想要的东西。
一种是使用next
而不是step
。 step
将进入函数调用,但next
将跳过它。选择下一步要使用的步进命令是解决此问题的最常用方法。
现在,这并不总是你想要的。特别是你可能在一条线上有多个调用,并且你总是想要跳过一些调用的子集。这在C ++中是典型的,其中通常存在许多微小的访问器和琐碎的构造器,这些构造器本质上是无趣的 - 但是你必须费力地逐步完成每个访问器以进入你关心的调用。
对于这个更复杂的场景,gdb具有skip
命令。这可以用于“黑名单”某些功能(或整个文件)。当某个功能被列入黑名单时,step
将不会进入该功能。有关如何使用skip
的详细信息,请参阅手册。
实现相同效果的最后一个非常重要的方法是确保您没有任何不想调试的库的调试信息。 gdb将自动不会进入没有调试信息的函数。