Можно ли просмотреть/отладить код, который компилятор C# генерирует для методов с атрибутом DllImport? Я попытался перейти к методу, определенному с атрибутом DllImport внутри отладчика VS, но это не позволяет мне это делать. В представлении дизассемблирования я могу видеть инструкцию вызова к определенному адресу, но когда я нажимаю клавишу F11 (шаг в нее), она просто шагает по ней. У меня включена опция «Включить отладку собственного кода» в свойствах проекта.Отладка кода Dllimport
UPDATE
Если я правильно понимаю, что компилятор выполняет некоторые операции, когда он видит DllImportAttribute
прикрепленных к способу. Я не нашел ничего в документации класса DllImportAttribute
. Исходный код для класса DllImportAttribute
также имеет только очень базовое определение класса. В отладчике при вызове внешней функции я вижу инструкцию по сборке call FFA0C0C8
, и когда я вхожу в нее, она немедленно переходит к импортированному телу функции, но импортированная функция имеет другой адрес, кроме FFA0C0C8. Я не смог изменить вид разбора на этот адрес. Похоже, что вся логика загрузки dll находится внутри этой функции, которую отладчик пропускает. Мне интересно, если это некоторая функция библиотеки или какая-то функция, которая была сгенерирована компилятором?
Я сомневаюсь, что отладчик VS позволит вам отлаживать этот код. –
@David Heffernan Должен ли я использовать WinDBG для этого? – Max
Возможно, я не знаю, что лучше. –