Start Debugging

Rider 2026.1 поставляет просмотрщик ASM для вывода JIT, ReadyToRun и NativeAOT

Rider 2026.1 добавляет плагин .NET Disassembler, позволяющий инспектировать машинный код, генерируемый компиляторами JIT, ReadyToRun и NativeAOT, не покидая IDE.

JetBrains выпустила Rider 2026.1 30 марта, и главное дополнение в инструментарии для разработчиков — новый просмотрщик ASM, который рендерит нативный disassembly вашего кода C# прямо внутри IDE. Плагин поддерживает вывод JIT, ReadyToRun (crossgen2) и NativeAOT (ilc) на x86/x64 и ARM64.

Зачем вообще смотреть на ассемблер

Чувствительный к производительности код .NET, подумайте о горячих циклах, путях SIMD или аллокациях, насыщенных struct, иногда ведёт себя иначе, чем подразумевает исходный код C#. JIT может девиртуализировать вызов, данные PGO могут заинлайнить метод, который, как вы ожидали, останется вызовом, или NativeAOT может разместить struct таким образом, что разрушит ваши предположения о кэш-линиях. До сих пор вам были нужны внешние инструменты вроде SharpLab, DisassemblyDiagnoser из BenchmarkDotNet или Disasmo Егора Богатова, чтобы увидеть, что фактически попадает на CPU. Rider 2026.1 переносит этот рабочий процесс в редактор.

Начало работы

Установите плагин через Settings > Plugins > Marketplace, выполнив поиск ”.NET Disassembler”. Он требует проект .NET 6.0+. После установки откройте любой файл C#, поместите курсор на метод или свойство и откройте View > Tool Windows > ASM Viewer (или щёлкните правой кнопкой и выберите его из контекстного меню). Rider компилирует целевой код и показывает вывод ассемблера автоматически.

Возьмите простой пример:

public static int Sum(int[] values)
{
    int total = 0;
    for (int i = 0; i < values.Length; i++)
        total += values[i];
    return total;
}

С включённым PGO и активной многоуровневой компиляцией JIT в .NET 10 векторизует этот цикл в SIMD-инструкции. Просмотрщик ASM показывает вам инструкции vpaddd и vmovdqu, которые доказывают, что это действительно произошло, прямо рядом с вашим исходным кодом.

Снимок и diff

Плагин поддерживает снимки. Вы можете захватить текущий вывод ассемблера, внести изменение в код, а затем сравнить две версии бок о бок. Это полезно, когда вы хотите убедиться, что небольшой рефакторинг (скажем, переключение с Span<T> на ReadOnlySpan<T> или добавление атрибута [MethodImpl(MethodImplOptions.AggressiveInlining)]) действительно меняет сгенерированный код так, как вы ожидаете.

Параметры конфигурации

Панель инструментов в просмотрщике ASM позволяет переключать:

Переключение между выводом JIT и NativeAOT для одного и того же метода — быстрый способ увидеть, насколько эти два конвейера расходятся для ваших конкретных шаблонов кода.

Где это вписывается

Просмотрщик ASM не заменяет BenchmarkDotNet для измерения реальной пропускной способности. Он его дополняет. Когда бенчмарк показывает неожиданную регрессию, просмотрщик даёт вам быстрый путь к ответу “что изменилось в сгенерированном коде?” без переключения инструментов или написания отдельного тестового стенда. Плагин основан на проекте Disasmo Егора Богатова и доступен на Windows, macOS и Linux. Полные детали на JetBrains Marketplace.

< Назад