我想有一种方法可以在抛出异常时向用户报告堆栈跟踪。做这个的最好方式是什么?是否需要大量额外代码?
回答问题:
如果可能的话,我希望它是便携的。我希望弹出信息,以便用户可以复制堆栈跟踪并在出现错误时通过电子邮件将其发送给我。
最佳答案
Andrew Grant's answer 是否有助于获取 throwing 函数的堆栈跟踪,至少对于 GCC 没有帮助,因为 throw 语句不保存当前堆栈跟踪它自己,并且 catch 处理程序此时将无法再访问堆栈跟踪。
使用 GCC 解决此问题的唯一方法是确保在 throw 指令处生成堆栈跟踪,并将其与异常对象一起保存。
当然,此方法要求每个抛出异常的代码都使用特定的异常类。
2017 年 7 月 11 日更新:有关一些有用的代码,请查看 cahit beyaz's answer , 指向 http://stacktrace.sourceforge.net - 我还没有用过,但看起来很有前途。
关于C++ 在异常时显示堆栈跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30309939/