Мой код 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?