微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Windows 自动调试器在 TerminateProcess 上触发断点异常

如何解决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 举报,一经查实,本站将立刻删除。