破坏者呼叫线

Destructor call line

本文关键字:呼叫 破坏者      更新时间:2023-10-16

我想找到一个文件和调用析构函数的位置的一行(gcc __FILE____LINE__定义)。在构造函数将参数传递给包装类的情况下,我设法处理了这一问题。

由于析构函数不能接受任何参数,有办法做到这一点吗?

您可以在linux上使用backtrace()backtrace_symbols(),但C++没有提供遍历堆栈的标准功能。

如果您只是为了调试而试图理解执行,那么您应该附加一个调试器,并在析构函数处设置一个断点。


如果你有共享指针,并且你关心谁会在之后真正清理,那么你可能不想使用共享指针。将您的设计更改为在内存的真正所有者之外的任何位置使用非拥有引用(std::weak_ptr)。