c++ - 如何在 c++ 中获取有关崩溃程序的一些信息以供将来调试
问题描述
我想知道当程序在 c++ 中崩溃时有什么方法可以捕获一些信息。此信息可用于开发人员未来的调试。例如,此信息提供了我的程序在哪一行代码和哪个函数中崩溃,或者最好是为什么。
解决方案
这个概念在 Windows 上称为故障转储或在 Linux上称为核心转储。它不是 C++ 的特性,而是操作系统的特性。它适用于编译为本机汇编指令的代码(C++ 经常出现这种情况)。
崩溃时崩溃程序的状态会被保存,所以你可以查看调用堆栈、内存、寄存器等。信息的数量可以配置。然后在调试器的帮助下完成分析,例如Windows 上的windbg。
对于行号,请注意与二进制文件一起构建符号。对于分析,您需要将故障转储与正确的符号放在一起以获取行号。
推荐阅读
- node.js - 模拟 MQTT 连接
- python - python3 请求 - 响应为 403。(在 cloudflare 后面)
- java - 将 360 度角映射到 255 度但坐标 x->y 被翻转的公式
- sql-server - 尝试通过代理使用 SSMS 访问 Cloud SQL 上的 SQL Server 实例时如何修复连接错误
- php - PHP如何将文件中的所有数组值放入CURL附件
- c++ - reinterpret_cast rvalue 使用一些参考
- oracle - (ORA-40573) 使用 JSON_OBJECT_T 元素更新表?
- python-3.x - Sublime Text + Anaconda 没有正确缩进 Python 代码
- html - @supports CSS 替代 Internet Explorer 浏览器
- javascript - npm start 没有获取更新的 package.json