Я получаю сообщение об ошибке доступа в неуправляемой dll, которую я пишу, но когда я пытаюсь отладить его в приложении c #, он получит только последний кадр стека вызовов в окне отладки 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();