【发布时间】:2017-07-03 03:11:16
【问题描述】:
仅针对 StackOverflow 异常,在从加载了 CLR 的进程配置 AddVectoredExceptionHandler 时,我正在努力创建 MiniDump。
我的处理程序被调用,.dmp 文件被创建,但 MiniDumpWriteDump 失败。
我没有问题为其他异常编写转储,例如访问冲突。如果没有加载 CLR 并且发生 StackOverflow-exceptin,那么我也成功写入了转储。
https://github.com/NicolaiNyberg/DbgSvcExtension 上提供了示例代码 其中 CrashHandler dll 项目配置处理程序,SoexCh.Cs 是从 C# 调用它的一个示例。
我的问题是:加载 CLR 后,未处理的异常处理程序会发生什么情况,从而阻止进程在 StackOverflow 异常事件中写入小型转储?
【问题讨论】:
-
没有足够的堆栈空间允许 MiniDumpWriteDump() 完成它的工作。可靠的小型转储生成需要一个“保护进程”。喜欢 DebugDiag。
-
谢谢汉斯。我刚刚阅读了您的答案,我意识到我的答案/解决方案是您建议的实施。