2013-04-08 8 views
0

Можно ли просмотреть/отладить код, который компилятор C# генерирует для методов с атрибутом DllImport? Я попытался перейти к методу, определенному с атрибутом DllImport внутри отладчика VS, но это не позволяет мне это делать. В представлении дизассемблирования я могу видеть инструкцию вызова к определенному адресу, но когда я нажимаю клавишу F11 (шаг в нее), она просто шагает по ней. У меня включена опция «Включить отладку собственного кода» в свойствах проекта.Отладка кода Dllimport

UPDATE

Если я правильно понимаю, что компилятор выполняет некоторые операции, когда он видит DllImportAttribute прикрепленных к способу. Я не нашел ничего в документации класса DllImportAttribute. Исходный код для класса DllImportAttribute также имеет только очень базовое определение класса. В отладчике при вызове внешней функции я вижу инструкцию по сборке call FFA0C0C8, и когда я вхожу в нее, она немедленно переходит к импортированному телу функции, но импортированная функция имеет другой адрес, кроме FFA0C0C8. Я не смог изменить вид разбора на этот адрес. Похоже, что вся логика загрузки dll находится внутри этой функции, которую отладчик пропускает. Мне интересно, если это некоторая функция библиотеки или какая-то функция, которая была сгенерирована компилятором?

+2

Я сомневаюсь, что отладчик VS позволит вам отлаживать этот код. –

+0

@David Heffernan Должен ли я использовать WinDBG для этого? – Max

+0

Возможно, я не знаю, что лучше. –

ответ

0

Вы можете отлаживать вызовы P/Invoke, если вы включаете встроенную отладку, и если у вас есть символы и источник для dll.

Если вы пытаетесь войти в вызов P/Invoke в какой-либо Windows-среде, то вы, вероятно, потерпите неудачу, так как у вас нет исходного кода для dll. не

EDIT

Если вы имели в виду, что вы хотите отладить фактический код CLR, что делает сортировочных и фактический родной призыв к DLL, то ответ НИКАКОГО - я не думаю, что это возможно.

+0

[Я не думаю, что это то, что он ищет] (http://stackoverflow.com/questions/15888158/debugging-dllimport-code#comment22624642_15888158). –