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

Зачем использовать WinDbg против отладчика Visual Studio (VS)?

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

Вот некоторые дополнительные ссылки, которые помогут с помощью WinDbg, большинство из них относятся к .NET.

Ответ 3

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

.loadby sos mscorwks

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

!help

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

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

Ответ 4

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

Ответ 5

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

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

Проблема:

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

Решение:

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

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

Ответ 6

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

Ответ 7

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

Ответ 8

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