在异常时检索堆栈跟踪:综合指南
本指南解决了发生异常时显示堆栈跟踪的常见需求。实现这一目标需要一种可移植的方法,允许用户捕获和共享跟踪以进行错误分析。
Andrew Grant 的解决方案
Andrew Grant 的解决方案在捕获堆栈跟踪方面存在缺陷抛出函数(在 GCC 下),因为单独的 throw 语句不能保留它。这会阻碍在 catch 处理程序中检索必要的信息。
自定义异常处理
一种可行的方法是创建一个自定义异常类来捕获此时的堆栈跟踪的抛出指令。这种方法确保了堆栈跟踪的保存和捕获处理程序的可用性。
更新:有用的代码资源
- http://stacktrace.sourceforge.net:A用于检索堆栈跟踪的综合库。
- [C 23 Stack Trace Library](https://en.cppreference.com/w/cpp/experimental/stacktrace):此功能在 C 23 中提出,提供标准化的堆栈跟踪处理。
- [Boost Stacktrace](https:// /www.boost.org/doc/libs/1_77_0/libs/stacktrace/doc/html/stacktrace.html):推荐用于 C 23 堆栈跟踪的参考实现
其他更新
-
2023 年 7 月:审查了多个堆栈跟踪库:
- C 23
- Boost Stacktrace
- 向后 cpp
- cpptrace
-
2024 年 8 月: P2490建议添加[[with_stacktrace]] 和 std::stacktrace::from_current_exception 到 C 26,简化了从捕获的异常中检索堆栈跟踪。
以上是如何可靠地从 C 中的异常中检索堆栈跟踪?的详细内容。更多信息请关注PHP中文网其他相关文章!