Одновременная отладка через промежуточный язык (IL) и C # в Visual Studio - PullRequest
11 голосов
/ 14 марта 2011

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

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

Ответы [ 3 ]

6 голосов
/ 14 марта 2011

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

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

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

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

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

1 голос
/ 14 января 2019

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

enter image description here

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

0 голосов
/ 10 августа 2011

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

...