Hel*_*ein 6 c++ windows crash minidump exception
我有一个用(Visual)C++编写的Windows服务,它具有非常详细的日志记录功能,经常帮助我找到客户有时遇到的错误原因.基本上我检查每个返回值并记录发生了什么以及错误来自哪里.
理想情况下,我希望对异常具有相同级别的详细可见性(例如,数组超出范围,除以零等).换句话说:我想知道异常的来源.出于可读性和实用性的原因,我不想将每几行代码包装到单独的try/catch块中.
我今天拥有的是一个通用的捕获所有捕获所有内容并在关闭程序之前记录错误.从用户的角度来看这很好 - 干净关闭而不是应用程序崩溃 - 但对我来说不好,因为我只从异常中获取一般信息(例如"数组超出范围"),但不知道它来自何处.
是不是更好的删除catch-all并让程序崩溃?我可以直接客户有Windows创建一个应用程序崩溃转储(如描述在这里).使用转储文件,WinDbg会指向我到代码中抛出异常的位置.
您可以通过调用AddVectoredExceptionHandler来注册自定义的向量异常处理程序。
每当抛出异常时都会调用它,并且您可以在其中生成堆栈跟踪,然后可以将其保存以用于日志记录。
编写代码来做到这一点并不完全是微不足道的,但也不是火箭手术。
我个人从未在 C++ 中完成过此操作,但如果没有现成的库可以在某处执行此操作,如果您没有时间或没有意愿自己完成此操作,我会感到惊讶。
| 归档时间: |
|
| 查看次数: |
1020 次 |
| 最近记录: |