我可以为进程禁用未处理的异常处理程序吗?

时间:2015-09-15 09:19:00

标签: sap

我正在SAP系统上执行系统测试。 SAP不时崩溃,我想通过将虚拟机重置为先前保存的状态来从这些崩溃中恢复。

我的问题是我无法可靠地检测到此类崩溃。我已经创建了WER LocalDumps注册表项,但我没有获得转储。

SAP似乎注册了一个未处理的异常处理程序,并对不同类型的异常执行不同的任务。有时它会显示一个消息框并终止应用程序(例如,在出现压缩错误的情况下),有时会出现所谓的短转储。

我既不对消息框感兴趣,也不对短转储感兴趣,所以我正在寻找一种方法来禁用SAP的未处理异常处理程序。这应该会启动WER,它会写入转储文件,我可以采取措施重新启动系统测试。

出于性能原因,我不想在每次测试时重新启动VM。

我试过了:

  • 我基本上熟悉未处理的异常处理程序。我已成功将它们应用到我自己的.NET代码中。
  • 我查看了SetUnhandledExceptionFilter (MSDN)和类似但仅适用于调用过程,我无法修改SAP的代码。
  • 我读到了 DisableUserModeCallbackFilter ,但我认为这对我的案例没有帮助

我想知道是否有可以激活的注册表设置(例如在ImageFileExecutionOptions中)或Shim

1 个答案:

答案 0 :(得分:0)

根据Hans Passant的评论(我作为一个明确的回答),

  

操作系统中没有内置boss覆盖开关来阻止它执行此操作。

我终于在进程处于活动状态时将调试器附加到SAP GUI。从启用所有异常开始,我缩小了条件,以便在SAP GUI崩溃时WinDbg中断(第一次机会,然后是第二次机会)。