8

我需要一些调试库/工具来追溯堆栈信息打印输出到标准输出。

Python 的回溯库就是一个例子。

与 Python 的回溯库等效的 C++ 是什么?

4

5 回答 5

2

这是特定于平台的,还取决于您如何编译代码。如果您使用 gcc 编译代码,-fomit-frame-pointer则很难获得有用的回溯,通常需要启发式。如果您使用任何使用该标志的库,您也会遇到问题——它通常用于高度优化的库(例如 nVidia 的 OpenGL 库)。

这不是一个独立的解决方案,因为它是更大引擎的一部分,但代码很有帮助:

这包括在可用时使用 gcc 使用帧指针进行回溯,以及在不可用时使用启发式回溯;这可能会在跟踪中提供虚假条目,但要获得崩溃报告的回溯,这比完全丢失跟踪要好得多。

在这些目录中还有其他相关代码,您希望查看这些代码以使用该代码(符号查找、信号处理);这些链接是一个很好的起点。

于 2011-03-04T00:48:53.963 回答
1

试试google core dumper,它会在你需要的时候给你一个核心转储。

于 2011-03-04T00:39:30.127 回答
1

现在有了cpp-traceback,它完全是 C++ 的 Python 风格的回溯。

于 2013-03-23T21:59:53.003 回答
0

如果您正在寻找在崩溃的情况下获取“堆栈跟踪”,请尝试“ google breakpad

于 2011-03-04T06:24:28.510 回答
0

我过去在libunwind上取得了成功。我知道它在 linux 上运行良好,但不确定 Windows 怎么样,尽管它声称是可移植的。

于 2011-03-04T00:50:49.120 回答