Каковы основные причины использования WinDbg вместо отладчика Visual Studio?
И обычно ли он используется в качестве полной замены отладчика Visual Studio или больше, когда возникает необходимость.
Каковы основные причины использования WinDbg вместо отладчика Visual Studio?
И обычно ли он используется в качестве полной замены отладчика Visual Studio или больше, когда возникает необходимость.
Если вам интересно, почему вы должны использовать 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.
Вот еще несколько ссылок, которые помогут вам в использовании WinDbg, большинство из которых относятся к .NET.
Вы не указываете, отлаживаете ли вы машинный или управляемый код. Это не влияет на ответ, WinDbg чрезвычайно полезен для обоих, но многие люди считают, что WinDbg как-то менее актуален при отладке приложений .NET. Не так. В качестве бонуса вы можете многое узнать о том, как работает платформа .NET, отладив приложение .NET в WinDbg с расширением SOS. Запустите (или подключите) свое приложение .NET в WinDbg и введите...
.loadby sos mscorwks
... чтобы убедиться, что вы загружаете правильное расширение для используемой версии CLR. Затем введите...
!help
... чтобы увидеть, какие команды доступны в расширении SOS.
Я слышал, как шутили, что у Microsoft есть только один инструмент разработчика, и это WinDbg. Все, что вам может понадобиться для отладки, находится там или в расширении. Конечно, некоторые из этих вещей также доступны в VS с более дружественным пользовательским интерфейсом... :-)
Я использовал его, когда мне присылали файлы .dmp с сервера NT4.0 — MSVC не загружает эти файлы старого формата.
Сочетание отладки ядра и отладки в режиме удаленного пользователя.
Насколько я знаю, Visual Studio до сих пор не может выполнять удаленную отладку в режиме, который я описываю как «решение». Это чертовски веская причина использовать windbg.
Проблема:
Решение:
Кроме того, мне проще использовать один и тот же отладчик как для режима ядра, так и для пользовательского режима, WindBG очень мощный даже в пользовательском режиме, и я могу использовать свои собственные расширения WindBG как в режиме ядра, так и в экземплярах пользовательского режима.
Легкий, может запускаться без установки на клиентскую машину, быстрый, может отлаживать режим ядра.
В последней визуальной студии по-прежнему отсутствует эквивалент «-o» Windbg, который заставляет отладчик автоматически подключаться к дочерним процессам? Очень полезно для приложений, которые должны запускаться из сложного файла .bat, или приложений, которые разветвляются и выходят из родительского процесса.
Мне всегда нравилась функция наблюдения и трассировки: 'wt' -> Она выводит в окно вывода все вызовы функций по мере их возникновения. Это было очень круто!