C++中等同于Python的traceback库
我需要一些调试库或工具,来追踪输出到标准输出(stdout)的堆栈信息。
Python有一个叫做traceback的库,可以用作例子。
那么,C++中有没有类似于Python的traceback库的东西呢?
5 个回答
1
现在有了一个叫做 cpp-traceback 的工具,它可以让C++的错误信息看起来像Python那样,简单明了。
1
试试谷歌核心转储工具,当你需要的时候,它会给你一个核心转储。
2
这跟你使用的平台有关,也和你编译代码的方式有关系。如果你用gcc编译代码时加上了-fomit-frame-pointer
这个选项,那么想要得到有用的错误追踪信息就会变得很困难,通常需要一些技巧。如果你使用的库也用了这个选项,那你会遇到更多问题——这个选项通常用于那些经过高度优化的库,比如nVidia的OpenGL库。
这不是一个独立的解决方案,因为它是一个更大引擎的一部分,但这些代码还是很有帮助的:
- https://svn.stepmania.com/svn/trunk/stepmania/src/archutils/Unix/Backtrace.cpp (适用于Linux和OSX)
- https://svn.stepmania.com/svn/trunk/stepmania/src/archutils/Win32/Crash.cpp (Win32的CrashHandler::do_backtrace)
- https://svn.stepmania.com/svn/trunk/stepmania/src/archutils/Darwin/DarwinThreadHelpers.cpp (适用于OSX)
这些代码包括了在使用gcc时如何利用帧指针进行错误追踪,以及在没有帧指针时如何进行启发式错误追踪;虽然这样可能会在追踪中出现一些无关的条目,但对于获取崩溃报告的错误追踪来说,这比完全失去追踪信息要好得多。
在这些目录中还有其他相关的代码,你可能需要查看一下,以便更好地利用这些代码(比如符号查找、信号处理);这些链接是一个很好的起点。