#windows #winapi #process #windbg #visual-studio-debugging
Вопрос:
У нас есть приложение для сбора дампа процесса и его настройки в ключе 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.
Комментарии:
1. @ThomasWeller, я обновил вопрос с выводами этих 3 команд. но вывод !gle показывает, что произошла какая-то ошибка.
2. Спасибо, что уточнили вопрос.
!gle
результаты могут быть довольно старыми и не соответствовать проблеме, которую вы видите.3. @devstability можете ли вы попробовать стандартный отладчик вместо вашего приложения, чтобы захватить дамп? Как procdump или windbg?