实现异常堆栈跟踪的最佳方法是什么?
我发现了某种使用uncaught_exception()的解决方案,但它需要为每个函数添加一些代码。
我需要在linux和windows下使用gcc的东西
答案 0 :(得分:4)
我认为没有一种跨平台的方式来实现它。在Windows上,查看StackWalk方法;在linux上,man backtrace。这将获得信息;由你来格式化它。
答案 1 :(得分:4)
我不确定是否存在用于展开堆栈的可靠的跨平台方法。
我所做的所有平台/体系结构都提供了一种在发生异常时将堆栈移动并将地址与函数名称匹配的方法。这些都不是可移植的,但报告框架可以编写为可移植的,实际的堆栈行走代码仍然是特定于平台的(Windows上的StackWalk或Linux上的回溯)。
您可以查看libunwind项目。我自己从来没有使用或调查过,所以它可能不是你想要的。
答案 2 :(得分:2)