Я получаю сообщение об ошибке нарушения прав доступа в неуправляемой dll, которую я пишу, но когда я пытаюсь отладить ее в приложении С#, она получит только последний кадр стека вызовов в окне отладки Visual Studio.
У меня есть отладка-> исключения-> 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, но чтобы дойти до конца, я включил символы Microsoft.
из-за этого моя трассировка стека выглядела примерно так:
myunmanaged.dll!ViolatingFunc()
- - - -
myunmanaged.dll!SomeFunc2()
- - - -
myunmanaged.dll!SomeFunc()
- - - -
[managed to unmanaged code transition]
- - - -
somecsharp.exe!com.somewhere.Form1.CallFuncThatCallsViolator();