2015-09-15 111 views
0

我正在SAP系统上执行系统测试。有时SAP会崩溃,我希望通过将虚拟机重置为以前保存的状态从这些崩溃中恢复。我可以禁用进程的未处理异常处理程序吗?

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

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

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

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

我曾尝试:

  • 我基本熟悉了未处理的异常处理程序。我已成功将它们应用于我自己的.NET代码。
  • 我看了SetUnhandledExceptionFilter (MSDN)和类似的,但它只适用于调用过程,我不能修改SAP的代码。
  • 我读到DisableUserModeCallbackFilter,但我不认为这是我的情况

我不知道是否有一个注册表设置(例如,在ImageFileExecutionOptions)或Shim,我可以激活很有帮助。

+1

基本问题是SAP调用SetUnhandledExceptionFilter()。做它自己的事情,所有大型项目都这样做。操作系统中没有内置老式倍率开关来阻止它执行此操作。也许SAP有一个,使用电话。 –

回答

0

根据Hans Passant的评论(我需要作为一个权威的答案),

有内置到操作系统,从这样阻止它没有老板倍率开关。

我终于在调试器连接到SAP GUI的时候,进程还在。从启用所有例外开始,我缩小了条件,以便在SAP GUI崩溃时发生WinDbg中断(第一次机会,然后第二次机会)。