Я получаю ошибку нарушения прав доступа в неуправляемой dll, которую я пишу, но когда я пытаюсь отлаживать It в приложении aC#, он получит только последний кадр стека вызовов в отладке Visual Studio окно.Неуправляемый стек вызовов в приложении C#
У меня есть 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, но, чтобы получить меня всю дорогу я включил Microsoft символов.
, что сделал мой трассировки стека выглядеть следующим образом:
myunmanaged.dll!ViolatingFunc()
- - - -
myunmanaged.dll!SomeFunc2()
- - - -
myunmanaged.dll!SomeFunc()
- - - -
[managed to unmanaged code transition]
- - - -
somecsharp.exe!com.somewhere.Form1.CallFuncThatCallsViolator();
И лучше всего также загружать символы отладки, с сервера символов Microsoft, иногда стеки вызовов выглядят ужасно, пока вы этого не сделаете. –
@ChrisO Это хороший момент. Я добавлю это к ответу. – linuxuser27
Является ли флажок «включить неуправляемую отладку кода»? который уже установлен для меня, я вижу рамку, где возникает проблема, но я не вижу, что произошло между последним управляемым вызовом. –