如何解决Windows 自动调试器在 TerminateProcess 上触发断点异常
我们有一个应用程序来收集进程转储,并将其配置在 AEDebug reg 密钥中以在进程崩溃时启动。有时会触发断点异常并转储指向调用堆栈下方。
0:000> k
# Child-SP RetAddr Call Site
00 0000001d`012df398 00007ffa`65d884f3 ntdll!NtTerminateProcess+0xa
01 0000001d`012df3a0 00007ffa`657734da ntdll!RtlExitUserProcess+0xa3
02 0000001d`012df490 00007ffa`5c651cd5 kernel32!ExitProcessImplementation+0xa
03 0000001d`012df4c0 00007ffa`5c652304 mscoreei!RuntimeDesc::ShutdownAllActiveRuntimes+0x285
04 0000001d`012df7b0 00007ffa`5bd66398 mscoreei!CLRRuntimeHostInternalImpl::ShutdownAllRuntimesThenExit+0x14
05 0000001d`012df7e0 00007ffa`5bd662e1 clr!EEPolicy::ExitProcessViaShim+0x9c
06 0000001d`012df830 00007ffa`5bcbb936 clr!SafeExitProcess+0x9d
07 0000001d`012dfab0 00007ffa`5bd6a198 clr!HandleExitProcessHelper+0x3e
08 0000001d`012dfae0 00007ffa`657713f2 clr!EEShutDownProcForSTAThread+0x2318
09 0000001d`012dfb10 00007ffa`65d854f4 kernel32!BaseThreadInitThunk+0x22
0a 0000001d`012dfb40 00000000`00000000 ntdll!RtlUserThreadStart+0x34
Windbg 中的 ~ 命令显示这是转储中的唯一线程。并且没有托管异常。
0:000> !pe
There is no current managed exception on this thread
0:000> ~
. 0 Id: 18f4.b07c Suspend: -1 Teb: 00007ff7`24f90000 Unfrozen
为什么会为此调用堆栈触发调试器?有没有其他人看到同样的情况?
更新:
0:000> .exr -1
ExceptionAddress: 0000000000000000
ExceptionCode: 80000003 (Break instruction exception)
ExceptionFlags: 00000000
NumberParameters: 0
0:000> !avrf
Application verifier is not enabled for this process.
Use appverif.exe tool to enable it.
0:000> !gflag
Current NtGlobalFlag contents: 0x00000000
0:000> !gle
LastErrorValue: (Win32) 0x6 (6) - The handle is invalid.
LastStatusValue: (NTSTATUS) 0xc0000008 - An invalid HANDLE was specified.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。