首页 > 解决方案 > 如何在 c++ 中获取有关崩溃程序的一些信息以供将来调试

问题描述

我想知道当程序在 c++ 中崩溃时有什么方法可以捕获一些信息。此信息可用于开发人员未来的调试。例如,此信息提供了我的程序在哪一行代码和哪个函数中崩溃,或者最好是为什么。

标签: c++c++11debuggingc++14error-logging

解决方案


这个概念在 Windows 上称为故障转储或在 Linux上称为核心转储。它不是 C++ 的特性,而是操作系统的特性。它适用于编译为本机汇编指令的代码(C++ 经常出现这种情况)。

崩溃时崩溃程序的状态会被保存,所以你可以查看调用堆栈、内存、寄存器等。信息的数量可以配置。然后在调试器的帮助下完成分析,例如Windows 上的

对于行号,请注意与二进制文件一起构建符号。对于分析,您需要将故障转储与正确的符号放在一起以获取行号。


推荐阅读