Re: 程序异常Windbg没有捕捉到最初的异常点

WinDbg

程序异常Windbg没有捕捉到最初的异常点


dbgnewbie 2013-09-06, 23:15 下午
我诱使一个程序引发了一个异常,异常的原因是我覆盖了栈后,导致eip被覆盖成了我所书写的内容。
但是windbg并没有在异常处断下来。

(bbc.b98): Access violation - code c0000005 (!!! second chance !!!)
eax=00000000 ebx=0015f810 ecx=771b389a edx=02e205f0 esi=76422960 edi=00007172
eip=771a15de esp=0015f7fc ebp=00164604 iopl=0         nv up ei pl zr na pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000246
ntdll!ZwRaiseException+0x12:
771a15de 83c404          add     esp,4

0:000> k
ChildEBP RetAddr  
0015f334 7719014d ntdll!ZwRaiseException+0x12
0015f334 00000000 ntdll!KiUserExceptionDispatcher+0x29


我的机器是win 7 x64位旗舰版的。

我在其它的win 7 x64位上却直接断到了异常点。搞不清楚什么原因。


Re: 程序异常Windbg没有捕捉到最初的异常点


格蠹老雷 2013-09-07, 11:11 上午

是JIT方式附加的?

原因是你的应用是以WoW方式运行,异常分发有个转发的过程:

http://advdbg.org/blogs/advdbg_system/articles/5884.aspx

如果是在异常发生前附加调试器,调试器收到第一轮异常时就中断,应该是没有问题的......

 

 

Re: 程序异常Windbg没有捕捉到最初的异常点


dbgnewbie 2013-09-07, 21:29 下午
非常感谢老大,是这样的,我使用jit调试的那个崩溃的程序。我在它运行的时候
attach上后就不出现我的上述问题了。

看了您的那篇文章后对wow有了一些认识,但是还是一知半解。大概了解了wow
的seh分发过程。

但是为什么wow运行程序时用jit的方式调试程序就会出现上述问题呢。我在同样
配置的同样系统,同样用jit调试同样的程序,为什么没有这个问题。



Powered by Community Server Powered by CnForums.Net