通过 GDB 设置断点时未定义函数"d::~d"

Function "d::~d" not defined when setting breakpoint by GDB

本文关键字:函数 未定义 GDB 设置 断点 通过      更新时间:2023-10-16

我在Linux中使用gdb进行调试。但是当我像这样设置断点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'之后,控制台返回:

breakpoint keep y 0x0000000000577a6c in d::get() at ../x.h:65

行号正确,但函数名错误

如果这样重写会怎么样?

class b
{
  protected:
   ...
  public:
  b(){
  ...
  }
  virtual ~b() {
  ...
  }
  ...
} ;
class d: public b{ 
  protected:
  ...
  public:
  d(){
  ...
  }
  ~d() {
  ...
  }
  ...
  p* get(){...};
} ;