【问题标题】:Gdb traces declaration of variables when exit from a scopeGdb 在退出作用域时跟踪变量的声明
【发布时间】:2013-08-13 07:39:51
【问题描述】:

当您调试使用 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 中的逐步调试在我看来令人困惑。

【问题讨论】:

  • 我也在尝试找到一种方法来禁用此行为。我正在研究一些 3rd 方代码,在这个阶段继续跳到破坏点非常分散注意力。

标签: gcc gdb


【解决方案1】:

没有办法做到这一点。

gdb 现在有一个“skip”命令,可以禁止单步执行某些操作。但它不会抑制函数中的 next。

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

【讨论】:

    猜你喜欢
    • 2012-07-16
    • 1970-01-01
    • 2020-07-05
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多