작성한 관리되지 않는 DLL에서 액세스 위반 오류가 발생하지만 AC# 응용 프로그램에서 디버그하려고하면 Visual Studio의 디버그에서 호출 스택의 마지막 프레임 만 가져옵니다 창문.C# 응용 프로그램의 관리되지 않는 호출 스택
throw되는 디버거를 중단하도록 debug-> exceptions-> System.AccessViolationException을 설정했습니다.
myunmanaged.dll!ViolatingFunc() Line 100 + 0xc bytes
- - - -
[external code] //myunmanaged.dll!function that I want to see
- - - -
somecsharp.exe!com.somewhere.Form1.CallFuncThatCallsViolator();
데이터가 garbeldegook로 바뀌는 것을보기 위해 관리되지 않는 스택을 걷고 싶습니다. 이것이 가능합니까?
1 단계이지만, 모두가 방법 나는 마이크로 소프트 문자를 사용할 날 잡으려고 관리되지 않는 디버깅을 활성화
답변. 내 스택 추적을 만든
는더 같이 :
이myunmanaged.dll!ViolatingFunc()
- - - -
myunmanaged.dll!SomeFunc2()
- - - -
myunmanaged.dll!SomeFunc()
- - - -
[managed to unmanaged code transition]
- - - -
somecsharp.exe!com.somewhere.Form1.CallFuncThatCallsViolator();
그리고 Microsoft 기호 서버에서 디버그 기호를로드하는 것이 가장 좋으며 때로는 호출 스택이 너무 끔직하게 보일 때가 있습니다. –
@ChrisO 좋은 지적입니다. 나는 그것을 그 대답에 추가 할 것이다. – linuxuser27
"관리되지 않는 코드 디버깅 사용"확인란입니까? 문제가 발생한 프레임을 볼 수는 있지만 마지막 관리 전화보다 무슨 일이 있었는지 알 수 없습니다. –