【发布时间】:2011-03-04 00:21:40
【问题描述】:
【问题讨论】:
-
我记得前段时间在寻找类似的东西,但我没有太多运气。我认为它可能过于冒险进入“实现定义”的领域。不过,我期待看到其他人推荐什么。
-
这个stackoverflow.com/questions/691719/… 几乎涵盖了它。
【问题讨论】:
这是特定于平台的,还取决于您编译代码的方式。如果您使用-fomit-frame-pointer 使用 gcc 编译代码,则很难获得有用的回溯,通常需要启发式。如果您使用任何使用该标志的库,您也会遇到问题 - 它通常用于高度优化的库(例如 nVidia 的 OpenGL 库)。
这不是一个独立的解决方案,因为它是更大引擎的一部分,但代码很有帮助:
这包括在可用时使用 gcc 使用帧指针进行回溯,以及在不可用时使用启发式回溯;这可能会在跟踪中提供虚假条目,但要获得崩溃报告的回溯,这比完全丢失跟踪要好得多。
您希望查看这些目录中的其他相关代码以使用该代码(符号查找、信号处理);这些链接是一个很好的起点。
【讨论】:
试试google core dumper,它会在您需要时为您提供核心转储。
【讨论】:
现在有 cpp-traceback,它完全是 C++ 的 Python 风格的回溯。
【讨论】:
我过去在libunwind 上取得了成功。我知道它适用于 linux,但不确定 Windows 怎么样,尽管它声称是可移植的。
【讨论】:
如果您想在崩溃时获取“堆栈跟踪”,请尝试“google breakpad”
【讨论】: