Легкий отладчик .NET?

Мне часто нужно отлаживать двоичные файлы .NET на тестовых машинах (под тестовой машиной я имею в виду, что на машине не установлена ​​Visual Studio, она часто переизображается, это не та машина, на которой я занимаюсь разработкой, так далее).

Мне нравится отладчик Visual Studio, но для меня непрактично устанавливать визуальные студии на свежеприготовленную тестовую машину только для отладки утверждения или сбоя (установка занимает слишком много времени, занимаемая площадь слишком велика и т. д.).

Мне бы очень хотелось быстро установить программу, которая могла бы вмешаться в работающий процесс, позволить мне указать расположение символов / исходного кода и позволить мне сразу перейти к отладке. Для нативных двоичных файлов windbg отлично работает, но я не нашел ничего похожего для управляемых двоичных файлов. Какие-нибудь рекомендации?

(в качестве примечания, я знаю о возможностях удаленной отладки визуальных студий, но по какой-то причине мне кажется, что это никогда не работает стабильно ... у меня часто возникают проблемы с подключением)

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
26
0
20 226
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

Всегда есть mdbg и шнур, но я бы посоветовал подробнее разобраться, почему удаленная отладка не работает последовательно.

VS2005 / 8 здесь кажется намного более надежным, чем предыдущие версии (хотя я в основном использую неуправляемые), и это избавляет вас от необходимости иметь доступ к символам на целевой машине.

Вы можете проверить MDbg: http://blogs.msdn.com/jmstall/archive/2006/11/22/mdbg-sample-2-1.aspx. Похоже, что он поставляется как минимум с .NET 3.5 SDK (и, вероятно, он включен в 2.0+).

Windbg имеет управляемые расширения (я считаю, называемые SOS), хотя я не знаю, позволяют ли они отладку на уровне исходного кода.

Для более приятного интерфейса, чем MDbg или cordbg, обратите внимание на DbgCLR - урезанную версию отладчика Visual Studio (по крайней мере, он выглядит так), который обрабатывает только управляемый код. Он поставляется с .NET Framework (я не уверен, находится ли он во время выполнения или вам нужен Framework SDK):

Обратите внимание, что cordbg устарел в пользу MDbg (хотя MDbg не имеет всех функций cordbg):

И, оглядываясь на MDbg при написании этого поста, я обнаружил, что для MDbg доступна оболочка GUI (которую я не пробовал):

Нет, нет: blogs.msdn.com/b/andypennell/archive/2005/02/21/…

thorn̈ 14.02.2011 16:28

Обновление: образец MDBG 4.0 был выпущен для microsoft.com/downloads/en/… Спасибо, Аарон

AaronBa 28.02.2011 17:10
Ответ принят как подходящий

Я наконец нашел расширения для Windbg, которые делают именно то, что я хотел: Sosex.dll, позволяет мне использовать windbg для отладки управляемых приложений с минимальной установкой. Я использую его более года, и он работал без ошибок для всех сценариев отладки, с которыми я сталкивался.

Вы пробовали использовать Взломанный .NET?

Это инструмент для отладки и создания сценариев во время выполнения, который дает вам доступ к внутренним компонентам любого настольного приложения .NET, работающего на вашем компьютере.

Версия 2 ILSpy содержит отладчик. И работает потрясающе!

Он все еще находится на очень ранней стадии, но несколько раз помогал мне.

Только берегитесь ошибок! :)

У меня есть версия ILSpy 2.4.0.1963, и я не могу найти никаких подсказок о том, как на самом деле использовать отладчик, о котором вы говорите. Ни исполняемого файла отладчика в папке ILSpy, ни щелчка правой кнопкой мыши в дереве, ничего. Подскажите, пожалуйста?

Uwe Keim 26.08.2016 12:08

Может быть, вы можете попробовать использовать Live Tuning в сочетании с Сервер Ocf?

Сам по себе это не отладчик, но довольно легко установить соединение между приложением и Live Tuning. Буквально 3 строчки кода. Тогда у вас будет доступ ко всем переменным, которые вы выберете для публикации.

Я нашел это полезным при отладке моих программ без доступа к декомпилированному коду или настоящему отладчику. На самом деле у вас не может быть точек останова, но оказывается, что иногда есть более эффективные способы отладки.

Используйте dnSpy.

dnSpy - это отладчик и редактор сборки .NET. Вы можете использовать его для редактирования и отладки сборок, даже если у вас нет исходного кода.

Это так замечательно. Очень маленький и легкий. Не требует установки или настройки. Его интерфейс точно такой же, как у Visual Studio. Даже его ярлыки такие же, как VS.

Функции:

Отладчик

  • Отладка игровых сборок .NET Framework, .NET Core и Unity, исходный код не требуется
  • Установите точки останова и войдите в любую сборку
  • Местные жители, часы, окна автомобилей
  • Окно переменных поддерживает сохранение переменных (например, расшифрованных массивов байтов) на диск или просмотр их в шестнадцатеричном редакторе (окно памяти).
  • ID объектов
  • Одновременно можно отлаживать несколько процессов
  • Разрыв при загрузке модуля
  • Точки трассировки и условные точки останова
  • Экспорт / импорт точек останова и трассировки
  • Стек вызовов, потоки, модули, окна процессов
  • Перерыв на выброшенные исключения (1-й шанс)
  • Окна переменных поддерживают вычисление выражений C# / Visual Basic
  • Можно отлаживать динамические модули (но не динамические методы из-за ограничений среды CLR)
  • Окно вывода регистрирует различные события отладки и по умолчанию показывает временные метки :)
  • Сборки, которые расшифровываются во время выполнения, могут быть отлажены, dnSpy будет использовать образ в памяти. Вы также можете заставить dnSpy всегда использовать образы в памяти вместо файлов на диске.
  • Общедоступный API, вы можете написать расширение или использовать интерактивное окно C# для управления отладчиком.

Редактор сборки

  • Все метаданные можно редактировать
  • Редактируйте методы и классы в C# или Visual Basic с помощью IntelliSense, исходный код не требуется
  • Добавление новых методов, классов или членов в C# или Visual Basic
  • Редактор IL для редактирования тела низкоуровневого метода IL
  • Таблицы метаданных низкого уровня можно редактировать. Для этого используется внутренний шестнадцатеричный редактор.

Шестнадцатеричный редактор

  • Щелкните адрес в декомпилированном коде, чтобы перейти к его IL-коду в шестнадцатеричном редакторе.
  • В обратном порядке нажмите F12 в тексте IL в шестнадцатеричном редакторе, чтобы перейти к декомпилированному коду или другому высокоуровневому представлению битов. Замечательно узнать, какое утверждение изменил патч.
  • Выделяет структуры метаданных .NET и структуры PE
  • Во всплывающих подсказках отображается дополнительная информация о выбранном поле метаданных .NET / PE.
  • Перейти к позиции, файлу, RVA
  • Перейдите к токену метаданных .NET, телу метода, #Blob / #Strings / #US heap offset или #GUID heap index
  • Следуйте ссылкам (Ctrl + F12)

Другой

  • Декомпилятор BAML
  • Синяя, светлая и темная темы (и темная высококонтрастная тема)
  • Закладки
  • Интерактивное окно C# можно использовать для создания сценария dnSpy
  • Поиск в сборках классов, методов, строк и т. д.
  • Анализировать использование классов и методов, находить абонентов и т. д.
  • Несколько вкладок и групп вкладок
  • Ссылки выделены, используйте Tab / Shift + Tab для перехода к следующей ссылке.
  • Перейти к командам точки входа и инициализатора модуля
  • Перейти к токену метаданных или командам строки метаданных
  • Всплывающие подсказки по коду (C# и Visual Basic)
  • Экспорт в проект

Это супер классный отладчик. Спасибо за вашу помощь.

Skorek 08.11.2019 17:17

Но DnSpy очень тяжелый и всегда требует новейшей среды выполнения (а разработчик всегда удаляет старую версию выпуска).

Squirrel.Downy 28.01.2021 06:26

Другие вопросы по теме