hoj*_*oju 11 c++ windows crash stack-trace backtrace
如果我的C++应用程序在Windows上崩溃,我想向我们的服务器发送有用的调试信息.
在Linux上我会使用GNU backtrace()函数 - 是否有Windows的等价物?
有没有办法在程序崩溃后提取有用的调试信息?或者只是从过程中?
(根据"测试你的应用程序,所以它不会崩溃"的建议是没有用的! - 所有非平凡的程序都会有bug)
Stackwalk64函数可用于在Windows上捕获堆栈跟踪.
如果您打算使用此函数,则应确保在禁用FPO的情况下编译代码 - 如果没有符号,StackWalk64将无法正确地执行FPO的帧.
__try/__except通过调用SetUnhandledExceptionFilter,您可以通过顶级块获取崩溃时正在运行的代码.这有点不可靠,因为它要求您在崩溃的进程中运行代码.或者,您可以只使用内置的Windows错误报告来收集崩溃数据.这更可靠,因为它不需要您添加在受损,崩溃的进程中运行的代码.唯一的成本是获得代码签名证书,因为您必须向服务提交签名的二进制文件. https://sysdev.microsoft.com/en-US/Hardware/signup/有更多详细信息.
| 归档时间: |
|
| 查看次数: |
5527 次 |
| 最近记录: |