2012-01-18 2 views
1

Я получаю ошибку нарушения прав доступа в неуправляемой 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. Возможно ли это?

Ответил enter image description here

Включение неуправляемого отладки является шаг 1, но, чтобы получить меня всю дорогу я включил Microsoft символов.

, что сделал мой трассировки стека выглядеть следующим образом:

myunmanaged.dll!ViolatingFunc() 
- - - - 
myunmanaged.dll!SomeFunc2() 
- - - - 
myunmanaged.dll!SomeFunc() 
- - - - 
[managed to unmanaged code transition] 
- - - - 
somecsharp.exe!com.somewhere.Form1.CallFuncThatCallsViolator(); 

ответ

5

Да это. Вам нужно отладить ваше приложение в «Смешанном режиме». Щелкните правой кнопкой мыши по проекту, выберите вкладку «Отладка» и установите флажок «Включить неуправляемую отладку кода». Вы увидите управляемые и собственные фреймы.

mixed mode debugging

Редактировать: Как отмечает ChrisO не имеющие символы MS может сделать родной отладки странно. Добавьте следующий путь к символам для символов Windows: http://msdl.microsoft.com/download/symbols

+1

И лучше всего также загружать символы отладки, с сервера символов Microsoft, иногда стеки вызовов выглядят ужасно, пока вы этого не сделаете. –

+0

@ChrisO Это хороший момент. Я добавлю это к ответу. – linuxuser27

+0

Является ли флажок «включить неуправляемую отладку кода»? который уже установлен для меня, я вижу рамку, где возникает проблема, но я не вижу, что произошло между последним управляемым вызовом. –

Смежные вопросы