Подтвердить что ты не робот

Одновременно отлаживать промежуточный язык (IL) и С# в Visual Studio

Я ищу расширение для Visual Studio, где в режиме отладки можно выполнить один шаг через промежуточный язык рядом с С#.

Я не ищу решение для отладки управляемого и неуправляемого кода.

4b9b3361

Ответ 1

Какова ваша цель? Является ли ваш IL, сгенерированный компилятором С# или динамически созданным во время выполнения? Если первый, вы можете использовать трюк для повторной компиляции вашего двоичного файла через ilasm.

  • Скомпилируйте код С#, как обычно. Не имеет значения, оптимизирован ли он или нет, но вы должны указать параметр компиляции для создания полных символов PDB.
  • Используйте ildasm для преобразования вашего двоичного файла в файл .il. Это опция Dump в меню.
  • перекомпилируйте файл .il, чтобы получить новый двоичный файл (и новый символ)

    ilasm.il [/exe |/dll]/debug

  • Теперь при отладке этой конкретной сборки вы увидите код IL, а не код С#. Вы также увидите соответствующие строки из исходного файла С#, если вы выберите подходящую опцию на шаге 2.

В случае динамически генерируемого IL я просто использовал бы WinDbg с расширением SOS. Он может сбрасывать IL и проходить через него, но требуется немного, чтобы привыкнуть.

Ответ 2

Я не думаю, что здесь нужен внешний дизассемблер. Когда вы отлаживаете VS 2010 (хотя и не Express), вы можете щелкнуть правой кнопкой мыши по окну кода и выбрать "Go To Disassembly", чтобы пройти через код IL. Может быть, это то, что вы ищете? Подробнее здесь

Ответ 3

Хотя это и не совсем расширение Visual Studio, как требовал OP, теперь, возможно, есть даже лучший способ сделать это, используя dnSpy, всеобъемлющий, автономный инструмент отладки .NET с открытым исходным кодом. Инструмент на самом деле делает гораздо больше, чем просто отладка; например, он позволяет напрямую редактировать .NET и собственные (PEFile) сборки, обфусцировать их, просматривать и изменять необработанные управляемые и собственные заголовки, контент, ресурсы, BAML и метаданные и многое другое, что я, вероятно, не обнаружил.

enter image description here

В целях обсуждения на этой странице обязательно ознакомьтесь с разделом интерпретатора IL проекта dnSpy. Точно так же, как запрошено OP, это библиотека, которая реализует интерпретатор IL для имитации (ILT) выполнения кода IL параллельно с одноступенчатым пошаговым (фактическим) собственным инструктором отладчика, с целью отображения состояния (логический) стек выполнения IL. Я полагаю, что в отладчике есть отличная рендеринг x86/x64, встроенный в отладчик, если это необходимо. Престижность разработчику этого приложения.