【发布时间】:2017-01-06 13:16:02
【问题描述】:
我正在使用 gdb 在 Linux 中进行调试。但是当我像b d::~d这样设置断点时,控制台返回:
函数“d::~d”未定义
我无法在析构函数中设置断点。 下面是示例代码:
class b
{
protected:
...
public:
b(){
...
}
~b() {
...
}
...
} ;
class d: public b{
protected:
...
public:
d(){
...
}
~d() {
...
}
...
p* get(){...};
} ;
但是,我成功设置了 b::b、b::~b 和 d::d 的断点。 在我输入“i b”后,控制台返回:
断点将 y 0x0000000000577a6c 保存在 d::get() at ../x.h:65
行号是对的,但是函数名是错的。
【问题讨论】:
-
你试过把析构函数变成虚拟的吗?这可能不是原因,但它仍然是具有非虚拟析构函数的潜在错误。
-
谢谢,但由于某种原因,我现在不能这样做。@Hayt
-
不知道为什么你不能
b d::~d,但你可以尝试在特定文件的特定行号上设置断点 -
还有:你编译优化了吗?也许这个功能由于某种原因被优化了。
-
我已经更新了我的问题。@alexeykuzmin0
标签: c++ linux debugging gdb breakpoints