C++ 异常堆栈跟踪

C++ 异常堆栈跟踪,c++,C++,实现异常堆栈跟踪的最佳方法是什么 我发现了一种使用uncaught_exception()的解决方案,但它需要为每个函数添加一些代码 我需要在linux和windows下在gcc上工作的东西我认为没有跨平台的方法可以做到这一点。在windows上,查看StackWalk方法;在linux上,man backtrace。这将获得信息;格式化由您决定。我不确定是否存在可靠的跨平台方法来展开堆栈 我所研究的所有平台/体系结构都提供了一种在发生异常时遍历堆栈并将地址与函数名匹配的方法。这些都不是可移植的

实现异常堆栈跟踪的最佳方法是什么

我发现了一种使用uncaught_exception()的解决方案,但它需要为每个函数添加一些代码


我需要在linux和windows下在gcc上工作的东西

我认为没有跨平台的方法可以做到这一点。在windows上,查看StackWalk方法;在linux上,man backtrace。这将获得信息;格式化由您决定。

我不确定是否存在可靠的跨平台方法来展开堆栈

我所研究的所有平台/体系结构都提供了一种在发生异常时遍历堆栈并将地址与函数名匹配的方法。这些都不是可移植的,但是报告框架可以编写为可移植的,而实际的堆栈遍历代码仍然是特定于平台的(Windows上的StackWalk或Linux上的backtrace)


你可以看看这个项目。我自己从来没有使用过或研究过这个,所以它可能不是您想要的;如果您感兴趣,请查看从的第1220行开始的GetStackTrace()函数。该函数在Linux、MacOS/X和Windows下工作(请注意,我借用了Windows的实现,在Windows下实现此功能需要大量的代码。当我的应用程序崩溃时,我不想要stacktrace,我想要一个附加到我的异常的stacktrace,很像e.printStackTrace();在Java中,这又是一个错误的方向。不要试图复制C++中的java异常。语言不同。但请看一下boost::exception库。事实上,我对Java知之甚少,也不打算模仿它,我只是发现能够打印异常的来源和经历是有用的。。。用于调试目的