我想找到一个文件和一行(gcc __FILE__
,__LINE__
定义)调用析构函数的地方。我设法在构造函数中将参数传递给包装类。
由于析构函数不能接受任何参数,有没有办法做到这一点?
答案 0 :(得分:0)
您可以在Linux上使用backtrace()
and backtrace_symbols()
,但C ++不提供步行堆栈的标准功能。
如果您只是想了解执行以进行调试,则应使用调试器附加并在析构函数中设置断点。
如果您有共享指针,并且您关心事后清理谁,那么您可能不想使用共享指针。更改您的设计以使用非拥有引用(std::weak_ptr
),而不是内存的真正所有者。