首页 >后端开发 >C++ >如何有效捕获和显示 C 异常的堆栈跟踪?

如何有效捕获和显示 C 异常的堆栈跟踪?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-27 08:40:11915浏览

How Can I Effectively Capture and Display Stack Traces for C   Exceptions?

如何在异常期间捕获和显示堆栈跟踪

为了向用户提供有关异常原因的信息,捕获和显示堆栈跟踪至关重要。然而,找到最有效的方法可能具有挑战性。

便携式堆栈跟踪报告

Andrew Grant 的响应并不能帮助获取抛出异常的函数的堆栈跟踪,因为单独的 throw 语句不会记录当前的堆栈跟踪。因此,在 catch 处理程序中访问堆栈跟踪变得不可能。

GCC 特定方法

要使用 GCC 解决此问题,必须在抛出指令的点并与异常对象一起保存。但是,此方法要求每个抛出异常的代码都使用相同的 Exception 类。

外部库

要获得更灵活的解决方案,请考虑以下库:

  • stacktrace.sourceforge.net: 一个综合库,提供堆栈跟踪信息。
  • C 23 C 23 标准即将添加的内容。
  • boost stacktrace: 一个强大且可靠的版本便携的库。
  • backward-cpp: 一个多功能且功能丰富的库。
  • cpptrace: 一个轻量级且可移植的库,支持 C 11。

最新更新

除了上面提到的库之外,请关注以下内容:

  • P2490: C 26 的提案,旨在引入 [[with_stacktrace]] 和std::stacktrace::from_current_exception.
  • cpptrace: 它的 C 11 实现允许从捕获的异常中检索堆栈跟踪。

以上是如何有效捕获和显示 C 异常的堆栈跟踪?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn