Мой код C# вызывает неуправляемую функцию сторонней библиотеки через P/Invoke, а неуправляемая функция имеет некоторые странные побочные эффекты. Я хочу отладить его и посмотреть, что он делает.Выполнение вызова P/Invoke в режиме дизассемблирования
Если я отлаживаю свой код на C# и пытаюсь выполнить «шаг за шагом» к вызову P/Invoke, вместо этого он переходит. Не удивительно, я ожидал этого; у него нет источника для этой DLL, и я не сказал, что я был в порядке, увидев вид разборки.
Таким образом, я переключаю отладчик на разборку (Debug> Windows> Disassembly). Теперь я вижу отдельные инструкции x86 в моем JIT-коде. Я снова пытаюсь войти в вызов P/Invoke. Опять же, он работает вместо этого - хотя я ясно сказал ему шаг в инструкцию x86 для CALL. Как трудно войти в x86 CALL?
Мои погуглить до сих пор показал мне несколько вариантов, которые могут повлиять на это, и я уже поставил их:
- В меню Инструменты> Параметры> Debugging> General, «Включить Just My Code» является бесконтрольно.
- В проекте> Свойства> вкладка «Отладка» «Включить неуправляемую отладку кода» отмечена.
Неплохо. Visual Studio по-прежнему отказывается вступать.
У меня нет PDB для сторонней библиотеки DLL, но это не имеет значения. Меня не интересует исходный код или информация о символах. (Ну, на самом деле они были бы очень хорошими, но я уже знаю, что я их не получу). Visual Studio может выполнять отладку x86 (это то, что вид разборки для), и все, что я хочу сделать, это шаг в код x86.
Что еще мне нужно сделать, чтобы заставить VS разрешить мне входить в инструкции x86 внутри вызова P/Invoke?
Вы когда-нибудь это выясняли? – Dennis
Прошло несколько лет с тех пор, как я попытался это сделать, но, как я помню, нет, я никогда не получал его на работу. –