gpt4 book ai didi

c++ - 在应用程序崩溃期间获取堆栈跟踪 - C/C++

转载 作者:太空狗 更新时间:2023-10-29 20:36:46 25 4
gpt4 key购买 nike

我是一名尝试编写 C-C++ 代码的 Java 开发人员。基本上我有一些构建脚本,它使用 Visual Studio 组件来构建应用程序库 - dll。我们不使用 Visual Studio IDE 进行调试。

但是每当我们的应用程序遇到崩溃时,我们必须逐行输入调试语句,并且需要检查崩溃的确切代码行。

C/C++ 中是否有任何 API 可以在我们的程序崩溃期间将堆栈跟踪写入文件?

某种事件监听器会在程序退出期间调用,并且可以将堆栈跟踪和错误信息打印到日志文件中。

我见过很多与此相关的问题,但我无法通过代码而不是调试工具了解如何处理此问题。我觉得 Java 在错误处理方面非常先进。

提前致谢!

最佳答案

标准不会为此提供任何便利。也就是说,您可以使用特定于操作系统的 API 来获得您想要的。在 Windows 上,最简单的可能是使用 StackWalker .您确实需要自己处理 SEH 问题。我建议 this article获取更多信息。

在 POSIX 平台上,您可以使用 backtrace来自 glibc 的函数。

一般来说,两者都要求你的程序编译时带有调试信息。也可以创建没有符号名称的故障转储(请参阅 Windows 上的 Minidumps),但您需要对其进行解码(例如 Visual Studio 会为您完成,但您在帖子中提到您不使用它).

此外,请记住,从崩溃进程编写故障转储非常容易出错(因为您真的不知道您的应用程序当时处于什么状态)。如果您从另一个进程写入故障转储,您可能会得到更可靠的结果。之前我整理了一个简单的 example out-of-process crash handler演示了如何实现它。

关于c++ - 在应用程序崩溃期间获取堆栈跟踪 - C/C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37327446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com