我需要一些调试库/工具来追溯堆栈信息打印输出到标准输出。
Python 的回溯库就是一个例子。
与 Python 的回溯库等效的 C++ 是什么?
这是特定于平台的,还取决于您如何编译代码。如果您使用 gcc 编译代码,-fomit-frame-pointer
则很难获得有用的回溯,通常需要启发式。如果您使用任何使用该标志的库,您也会遇到问题——它通常用于高度优化的库(例如 nVidia 的 OpenGL 库)。
这不是一个独立的解决方案,因为它是更大引擎的一部分,但代码很有帮助:
这包括在可用时使用 gcc 使用帧指针进行回溯,以及在不可用时使用启发式回溯;这可能会在跟踪中提供虚假条目,但要获得崩溃报告的回溯,这比完全丢失跟踪要好得多。
在这些目录中还有其他相关代码,您希望查看这些代码以使用该代码(符号查找、信号处理);这些链接是一个很好的起点。
试试google core dumper,它会在你需要的时候给你一个核心转储。
现在有了cpp-traceback,它完全是 C++ 的 Python 风格的回溯。
如果您正在寻找在崩溃的情况下获取“堆栈跟踪”,请尝试“ google breakpad ”
我过去在libunwind上取得了成功。我知道它在 linux 上运行良好,但不确定 Windows 怎么样,尽管它声称是可移植的。