Я понимаю, насколько мощным может быть windbg при отладке, но когда лучше всего использовать его для отладки проблемы? Это более конкретная проблема или просто опыт, интуиция и знание того, что их использование может просто сделать работу лучше?
Когда использовать windbg для отладки?
Ответы (3)
Всего понемногу, и много личных предпочтений. Многие люди, использующие WinDbg, используют только WinDbg, поэтому они лучше всего подходят для отладки.
WinDbg также имеет несколько хороших расширений, таких как SOS. Таким образом, конкретное расширение может предоставить вам конкретную информацию, которой нет у другого отладчика.
Одной из причин использования другого отладчика в определенных обстоятельствах является то, что вы считаете, что отладчик неверен. Это конечно редкость. Например, для таких вещей, как обход стека, отладчики используют разные методы, поэтому вы можете подтвердить, что стек соответствует вашим ожиданиям, используя другой.
Подводя итог, для большинства вопросов это не имеет значения. Это то, что вы лучше всего умеете использовать. Для некоторых конкретных проблем важно то, что вы говорите, зная, какой инструмент лучше всего подходит для этой конкретной проблемы.
Хотя Windbg также является прекрасным инструментом для отладки в пользовательском режиме, если вы в конечном итоге выполняете отладку в режиме ядра, это действительно единственный серьезный выбор.
Сценарий отладки в режиме ядра часто включает две машины: отладчик и отлаживаемую программу. Вы будете запускать Windbg на отладочной машине, которая подключена к отлаживаемой программе через последовательное соединение, Firewire или USB. В этом сценарии вы можете «заморозить» целевую машину и получить полный контроль над всем, что на ней работает. Часто вашим отлаживаемым объектом (целью) будет виртуальная машина, работающая под управлением VMWare или аналогичной — в этом случае соединение также обычно использует виртуальные последовательные порты.
Вот инструкции от VMWare о том, как настроить отладку ядра виртуальной машины:
http://www.vmware.com/support/ws5/doc/ws_devices_serial_advanced_example_debugging.html
Вы также можете использовать VirtualKD, который упрощает настройку и ускоряет подключение:
http://virtualkd.sysprogs.org/
Вы также можете использовать Windbg для локальной отладки ядра. В этом случае у вас есть только одна машина, на которой вы подключаете Windbg к работающему ядру. Вы не можете «заморозить» машину, так как это также заморозит работу Windbg на той же машине, но вы можете проанализировать содержимое памяти и так далее.
Хорошая точка зрения. Еще одно хорошее решение для отладки виртуального ядра — LiveKd от sysinternals.
http://technet.microsoft.com/en-us/sysinternals/bb897415.aspx