C++ 在异常时显示堆栈跟踪

标签 c++ exception stack-trace

我想有一种方法可以在抛出异常时向用户报告堆栈跟踪。做这个的最好方式是什么?是否需要大量额外代码?

回答问题:

如果可能的话,我希望它是便携的。我希望弹出信息,以便用户可以复制堆栈跟踪并在出现错误时通过电子邮件将其发送给我。

最佳答案

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/

相关文章:

c++ - 函数指针和dll加载顺序

c++ - 只有静态方法的类比命名空间更可取吗?

c# - 尝试处理异常时订购 catch block

java - 有没有办法在重定向到错误页面(在 Java 中)之前捕获错误的堆栈跟踪?

c++ - 交叉引用 header 中的错误 "Unterminated conditional directive"

c++ - 什么是 .so.2 文件?

java - 在 JasperException 上重定向页面

java - 运行 GWT 应用程序时出现异常

应用程序启动崩溃的 iOS BugSense 堆栈跟踪

java - 配置 Java 安装以仅打印堆栈跟踪的前几行