.exr ExceptionFlags与.lastevent相矛盾

时间:2015-08-31 19:46:03

标签: debugging exception-handling windbg internals

今天我看到了一个.NET NullReferenceException,其中IMHO应该是第一次机会异常,因为异常被捕获并显示为MessageBox。

在WinDbg中,它看起来像这样:

0:000> .exr -1
ExceptionAddress: 000007fe8e5794ba
   ExceptionCode: c0000005 (Access violation)
  ExceptionFlags: 00000000
NumberParameters: 2
   Parameter[0]: 0000000000000001
   Parameter[1]: 0000000000000149
Attempt to write to address 0000000000000149

我想知道ExceptionFlags是否包含该信息,但WinDbg帮助.hh .exr无法解释输出。

阅读MSDN for EXCEPTION_RECORD structure,我发现了

  • 此成员可以为零,表示可持续的异常
  • 或EXCEPTION_NONCONTINUABLE表示不可持续的异常

also on MSDN表示EXCEPTION_NONCONTINUABLE的值为1.

到目前为止,这符合我的期望,我有第一次机会例外。

但后来我做了

0:000> .lastevent
Last event: 12c0.b2c: Access violation - code c0000005 (first/second chance not available)

为什么.lastevent认为信息不存在?哪个命令更可靠?

0 个答案:

没有答案