C++相当于Python的traceback库

发布于 2024-10-20 02:56:15 字数 164 浏览 5 评论 0原文

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

Python 的 traceback 库就是一个例子。

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

I need to get some debugging libraries/tools to trace back the stack information print out to the stdout.

Python's traceback library can be an example.

What can be the C++ equivalent to Python's traceback library?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

攀登最高峰 2024-10-27 02:56:15

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

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

这包括使用 gcc 可用时使用帧指针进行回溯,并且当不是时进行启发式回溯;这可能会在跟踪中产生虚假条目,但对于获取崩溃报告的回溯,这比完全丢失跟踪要好得多。

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

This is platform-specific, and also depends on how you're compiling code. If you compile code with gcc using -fomit-frame-pointer it's very hard to get a useful backtrace, generally requiring heuristics. If you're using any libraries that use that flag you'll also run into problems--it's often used for heavily optimized libraries (eg. nVidia's OpenGL libraries).

This isn't a self-contained solution, as it's part of a larger engine, but the code is helpful:

This includes backtracing with the frame pointer with gcc when available and heuristic backtracing when it isn't; this can tend to give spurious entries in the trace, but for getting a backtrace for a crash report it's much better than losing the trace entirely.

There's other related code in those directories you'd want to look at to make use of that code (symbol lookups, signal handling); those links are a good starting point.

仅此而已 2024-10-27 02:56:15

尝试 google core dumper,它会在您需要时为您提供核心转储。

Try google core dumper, it will give you a core dump when you need it.

俯瞰星空 2024-10-27 02:56:15

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

There's now cpp-traceback, it's exactly Python-style tracebacks for C++.

禾厶谷欠 2024-10-27 02:56:15

我过去曾使用 libunwind 取得过成功。我知道它在 linux 上运行得很好,但不确定在 Windows 上如何,尽管它声称是可移植的。

I have had success with libunwind in the past. I know it works well with linux, but not sure how Windows is, although it claims to be portable.

负佳期 2024-10-27 02:56:15

如果您希望在崩溃时获取“堆栈跟踪”,请尝试“google breakpad'

If you are looking for getting a 'stack trace' in case of crash, try 'google breakpad'

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文