5

当您调试使用 gcc 4.8 生成的代码时,您会发现每个析构函数都有自己的“debug_line”条目。例如,如果您编译 (g++ -g "file") 并调试 (gdb a.out) 这个程序:

class C {
public:
  C() {}
  ~C() {}
  int m() { return 0; }
};

/*  7 */ int main() {
/*  8 */   C a;
/*  9 */   C b;
/* 10 */   C c;
/* 11 */   return a.m() + b.m() + c.m();
/* 12 */ }

你得到这个输出:

(gdb) start
8   /*  8 */   C a;
(gdb) next
9   /*  9 */   C b;
(gdb) next
10  /* 10 */   C c;
(gdb) next
11  /* 11 */   return a.m() + b.m() + c.m();
(gdb) next
10  /* 10 */   C c;
(gdb) next
9   /*  9 */   C b;
(gdb) next
8   /*  8 */   C a;
(gdb) next

如何从跟踪中禁用这些破坏信息的输出?

我想禁用此信息,因为 Qtcreator 中的逐步调试在我看来令人困惑。

4

1 回答 1

0

没有办法做到这一点。

gdb 现在有一个“跳过”命令,可以禁止进入某些事情。但它不会抑制函数中的下一步。

这种事情是GIGO的一个案例。gdb 几乎受编译器发出的行表的支配。也许它甚至是一个 GCC 错误,但您必须深入研究所有血腥细节才能确定。

于 2013-08-14T02:12:17.507 回答