Зачем использовать WinDbg против отладчика Visual Studio (VS)? - PullRequest
56 голосов
/ 20 сентября 2008

Каковы основные причины использования WinDbg против отладчика Visual Studio?

И обычно ли он используется в качестве полной замены для отладчика Visual Studio, или более того, когда возникает необходимость.

Ответы [ 8 ]

66 голосов
/ 20 сентября 2008

Если вам интересно, почему вы должны использовать windbg вместо Visual Studio, вам нужно прочитать Advanced Windows Debugging . В любое время, когда вам нужно отладить действительно ужасную проблему, у windbg есть лучшая технология, чем в Visual Studio. Windbg обладает более мощным языком сценариев и позволяет вам писать библиотеки DLL для автоматизации сложных проблем. Он установит gflags.exe, что даст вам лучший контроль над кучей для отладки перезаписи памяти.

На самом деле вам не нужно запускать установку, вы можете просто скопировать файлы и быть готовыми к работе. Также он устанавливает adsplus.vb, поэтому вы можете взять мини-дамп запущенных процессов. Также очень легко настроить удаленную отладку. Нет ничего лучше, чем иметь возможность отладить проблему со своего рабочего стола вместо 15-дюймового монитора, который мерцает на тестовом ПК.

Для повседневного написания кода я использую Visual Studio, но как только вам нужно начать отлаживать проблемы с других компьютеров или оказаться в очень некрасивой ситуации, windbg - единственный путь. Потратить некоторое время на изучение виндбг - это отличная инвестиция. Также, если вы посмотрите на аварийные дампы, есть два замечательных ресурса: http://www.dumpanalysis.org/blog и http://blogs.msdn.com/ntdebugging/default.aspx, которые выполняют всю свою отладку с помощью windbg.

11 голосов
/ 24 сентября 2008

Вот некоторые дополнительные ссылки, чтобы помочь с использованием WinDbg , большинство из них .NET специфично.

6 голосов
/ 23 сентября 2008

Вы не указываете, отлаживаете ли вы нативный или управляемый код. Это не влияет на ответ, WinDbg чрезвычайно полезен для обоих, но многие люди считают, что WinDbg как-то менее актуален при отладке приложений .NET. Не так. В качестве бонуса вы можете многое узнать о том, как работает платформа .NET, отладив ваше приложение .NET в WinDbg с расширением SOS. Запустите (или подключите) ваше приложение .NET в WinDbg и введите ...

.loadby sos mscorwks

... чтобы убедиться, что вы загружаете правильное расширение для используемой версии CLR. Затем наберите ...

!help

... чтобы увидеть, какие команды доступны в расширении SOS.

Я слышал, что шутил, что у Microsoft есть только один инструмент для разработчиков, и это WinDbg. Все, что вы могли бы хотеть для отладки, находится там или в расширении. Конечно, подмножество этих вещей также доступно в VS с более дружественным пользовательским интерфейсом ...: -)

3 голосов
/ 11 февраля 2009

Смешивание отладки ядра плюс отладка в режиме удаленного пользователя.

AFAIK, visual studio все еще не может выполнять удаленную отладку в режиме, который я называю "решением". Это чертовски хорошая причина использовать windbg.

Проблема:

  • Установите windbg через 1394. Ваше приложение работает на «цели». Windbg работает на "хосте".
  • Запуск визуальной студии на хосте
  • Сделайте так, чтобы visual studio запустила ваше приложение на цели с помощью удаленных инструментов.
  • Ворвитесь в режим ядра windbg, чтобы остановить цель
  • Подождите достаточно долго, чтобы TCP-соединение visual studio вышло на тайм-аут
  • "g" в windbg, чтобы остановить цель
  • наблюдайте, как ваше приложение всплывает, когда удаленный монитор обнаруживает, что сетевое соединение пропало
  • перезапустите ваше приложение: (

Решение:

  • Не используйте visual studio.
  • Запуск пользовательского режима windbg на цели с "-server"
  • Сделайте так, чтобы приложение цели запустило ваше приложение.
  • На хосте запустите 2-уй windbg, который подключается к цели с помощью «-remote».
  • Если TCP-соединение разрывается, просто запустите другой экземпляр windbg на хосте, и ничего не потеряно. Ваше приложение не умерло, потому что на цели запущен управляющий процесс windbg пользовательского режима.

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

3 голосов
/ 20 сентября 2008

Я использовал его, когда мне отправляли файлы .dmp с сервера NT4.0 - MSVC не загружает эти файлы старого формата.

2 голосов
/ 11 февраля 2009

В последней визуальной студии по-прежнему отсутствует эквивалент "-o" windbg, который заставляет отладчик автоматически подключаться к дочерним процессам? Очень полезно для приложений, которые должны запускаться из сложного файла .bat, или приложений, которые разветвляются и выходят из родительского процесса.

2 голосов
/ 20 сентября 2008

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

1 голос
/ 17 июля 2010

Мне всегда нравились часы с функцией отслеживания: 'wt' -> Он выводит в окно вывода все вызовы функций, как они происходят. Это было довольно круто!

...