C++/CLR에서 응용 프로그램을 작성했습니다. 네이티브 lib/dll을 사용합니다. 드물 긴하지만 내부 DLL을 내부적으로 손상시킵니다. 그런 다음 stacktrace를 얻지 만 관리되는 부분까지만 내부 네이티브 부분이 빠져 나옵니다. 전체 스택 트레이스를 표시 할 수있는 방법이 있습니까?충돌하는 혼합 모드 exe/dll에서 전체 스택 추적을 얻는 방법?
나는 다음과 같은 테스트를 만들었습니다. 네이티브 dll 안에 코드가 추가되어 항상 충돌을 일으켰습니다. exe를 doubleclicking하여 실행하면 이전과 같이 관리되는 부분의 스택 추적을 얻습니다. 디버거가 부착 된 VS2008에서 (단지 F5 키를 누름) 실행하면 충돌이 발생하여 전체 stacktrace, 관리되는 부분과 관리되지 않는 부분을 볼 수 있습니다.
액트 버트 버그가 드물게 발생하기 때문에 사용자가 VS를 통해 설치하지 않고 전체 스택 트레이스를 어떻게 든 표시하는 응용 프로그램에 뭔가를 추가하고 싶습니다. 그렇게 할 수있는 방법이 있습니까?
들으 마크
이것은 분명히 흥미로운 프로그래밍이지만, 관리되는 응용 프로그램이든 네이티브 응용 프로그램이든 관계없이 충돌 한 스택의 스택을 보면 주 스레드의 다음 스택 추적을 얻을 수 있습니다. (다음 주석의 stacktrace 참조) 나를 도와주지 않습니다. :( – marc40000
wow64cpu.dll! TurboDispatchJumpAddressEnd + 0x690 wow64cpu.dll! TurboDispatchJumpAddressEnd + 0xe3 wow64.dll! Wow64SystemServiceEx + 0x1ce wow64.dll! Wow64LdrpInitialize + 0x429 NTDLL.DLL! RtlResetRtlTranslations + 0x1b08 NTDLL.DLL! RtlResetRtlTranslations + 0xc63 NTDLL.DLL! LdrInitializeThunk + 0XE NTDLL.DLL! NtWaitForMultipleObjects + 0x15 KERNEL32.DLL! WaitForMultipleObjectsEx + 0x8e, 즉 KERNEL32.DLL!와 WaitForMultipleObjects + 0x18 KERNEL32.DLL! CheckForReadOnlyResource + 0x175 KERNEL32.DLL! CheckForReadOnlyResource + 0x212 KERNEL32 .dll! UnhandledExceptionFilter + 0x163 kernel32.dll! Unh andledExceptionFilter + 0xe0 – marc40000
ntdll.dll! RtlKnownExceptionFilter + 0xb7 ntdll.dll! RtlInitializeExceptionChain + 0x36 – marc40000