程序crash后为什么没有启动JIT调试器?
来源:互联网 发布:编辑网络大赛 编辑:程序博客网 时间:2024/05/01 02:58
今天在MS ntdebugging blog上看到一个puzzler, 是说一般通过设置注册表的AeDbug选项,当程序崩溃的时候会有一个JIT的调试器跳出来(缺省时候是Dr. Waston, 但是如果装过VS的话就会是VS),在什么情况下debugger不会跳出来?
1. 在一个线程启动时,RTL会在调用BaseThreadInit 之前安装异常处理程序,如下,如果因为某种原因破坏了这个异常处理链的话(chain of exception handler), 那就不会调用debugger出来了
ChildEBP RetAddr
000ef7ac 75fbf837 ntdll!KiFastSystemCallRet
000ef7b0 75fbf86a USER32!NtUserGetMessage+0xc
000ef7cc 00b21418 USER32!GetMessageW+0x33
000ef80c 00b2195d notepad!WinMain+0xec
000ef89c 76e24911 notepad!_initterm_e+0x1a1
000ef8a8 7704e4b6 kernel32!BaseThreadInitThunk+0xe
000ef8e8 7704e489 ntdll!__RtlUserThreadStart+0x23 << Exception Handler在此安装
000ef900 00000000 ntdll!_RtlUserThreadStart+0x1b
2. crash的那个进程负责创建debugger进程,所以在系统资源不够的情况下,有可能创建不成功,则debugger不会被调用...
- 程序crash后为什么没有启动JIT调试器?
- 程序Crash后的调试技巧
- 程序Crash后的调试技巧
- 程序crash后定位
- iPhone开发技巧之调试篇— 程序Crash后的调试技巧
- Phone开发技巧之调试篇(3)— 程序Crash后的调试技巧
- iPhone开发技巧之调试篇 — 程序Crash后的调试技巧
- iPhone开发技巧之调试 — 程序Crash后的调试技巧
- iPhone开发技巧之调试篇(3)— 程序Crash后的调试技巧
- iPhone开发技巧之调试篇(3)— 程序Crash后的调试技巧
- iPhone开发技巧之调试篇(3)— 程序Crash后的调试技巧
- iPhone开发技巧之调试篇(3)— 程序Crash后的调试技巧
- win7安装程序后为什么在桌面没有创建快捷方式
- "无法启动调试 没有正确安装调试器 请运行安装程序安装或修复调试器" VS2003错误
- “无法启动调试 没有正确安装调试器 请运行安装程序安装或修复调试器”
- Android 程序crash后重新启动
- 启动调时错误"无法启动调试 没有正确安装调试器 请运行安装程序安装或修复调试器"的解决办法
- 设置winDbg为及时调试器JIT
- FCKeditor编辑器的应用
- Win32消息处理API---BroadcastSystemMessage、BroadcastSystemMessageEx
- STOP:0x0000007E蓝屏软件故障处理一例
- 长整型或长double型字符串数据 转换为 double
- Linux操作系统命令操作小知识
- 程序crash后为什么没有启动JIT调试器?
- 我那时苦着呢,经常吃不饱饭,也没什么新衣服穿......
- 汇编程序中将通用寄存器置0的N种方法
- 关于引用的讨论
- 常用热门网摘代码的收集
- Win32消息处理API---GetMessage
- 语音+视频+数据+mpls经典配置
- 十六进制字符串转换为十进制数
- Detours x64