如何在C ++中实现堆栈跟踪(从投掷到捕获站点)?

时间:2009-08-12 13:50:44

标签: c++ exception-handling

我们可以用诡计的方式显示异常的整个堆栈跟踪(函数+行),就像在C ++中的Java和C#一样吗?

我们可以使用宏来实现Windows和类似Linux的平台吗?

感谢

3 个答案:

答案 0 :(得分:2)

不是没有平台特定知识或在每个功能中添加代码。

答案 1 :(得分:2)

在Windows上,可以使用Windows DbgHelp API完成,但要完全正确,需要进行大量的实验和研究。请参阅http://msdn.microsoft.com/en-us/library/ms679267(VS.85).aspx作为开始。我不知道如何在其他平台上实现它。

希望这有点帮助。

此致

Sebastiaan

答案 2 :(得分:1)

如果您在使用glibc的平台上运行,则可以使用backtrace()函数。这是C函数,但它们也适用于c ++返回跟踪。这当然不是便携式的,但我怀疑你会找到一个便携式解决方案,而不是每个功能都有额外的代码; - )

http://www.gnu.org/software/libc/manual/html_node/Backtraces.html