当你调试用gcc 4.8生成的代码时,你会发现每个析构函数都有它自己的"debug_line“条目。例如,如果您编译(g++文件“-g”)并调试(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中的逐步调试对我来说似乎令人困惑。
发布于 2013-08-14 10:12:18
没有办法做到这一点。
gdb现在有一个“跳过”命令,可以抑制步进到某些地方。但它不会抑制函数中的nexting。
这类事情就是GIGO的一个例子。gdb在很大程度上取决于编译器生成的行表。也许这甚至是一个GCC的漏洞,但你必须深入挖掘所有血淋淋的细节才能确定答案。
https://stackoverflow.com/questions/18203293
复制相似问题