Вход в вызов P / Invoke в режиме дизассемблирования

Мой код на C # вызывает неуправляемую стороннюю библиотечную функцию через P / Invoke, и у неуправляемой функции есть некоторые странные побочные эффекты. Я хочу отладить его и посмотреть, что он делает.

Если я отлаживаю свой код C # и пытаюсь выполнить «Step Into» вызов P / Invoke, он вместо этого переходит. Там нет ничего удивительного - я ожидал этого; у него нет источника для этой DLL, и я не сказал, что у меня все в порядке с видом на разборку.

Поэтому я переключаю отладчик в режим дизассемблирования (Debug> Windows> Disassembly). Теперь я вижу отдельные инструкции для x86 в своем коде JITted. Я снова пытаюсь войти в вызов P / Invoke. Опять же, он переходит вместо этого - хотя я четко сказал это Step Into инструкции xALL CALL. Насколько сложно войти в x86 CALL?

Мой Google до сих пор показал мне несколько вариантов, которые могут повлиять на это, и я уже установил их:

В меню «Инструменты> Параметры> Отладка> Общие» флажок «Включить только мой код» снят.На вкладке «Проект»> «Свойства»> «Отладка» установлен флажок «Включить отладку неуправляемого кода».

Не хорошо. Visual Studio по-прежнему отказывается вмешиваться.

У меня нет PDB для сторонней библиотеки DLL, но это не должно иметь значения. Меня не волнует исходный код или информация о символах. (Ну, на самом деле они были бы очень хорошими, но я уже знаю, что не собираюсь их получать.) Visual Studio может выполнять отладку x86 (вот что такое представление Disassemblyза), и все, что я хочу сделать, это шаг в код x86.

Что еще мне нужно сделать, чтобы заставить VS позволить мне перейти к инструкциям x86 внутри вызова P / Invoke?

Ответы на вопрос(4)

Ваш ответ на вопрос