Когда использовать windbg для отладки?

Я понимаю, насколько мощным может быть windbg при отладке, но когда лучше всего использовать его для отладки проблемы? Это более конкретная проблема или просто опыт, интуиция и знание того, что их использование может просто сделать работу лучше?


person Jon    schedule 20.02.2011    source источник


Ответы (3)


Всего понемногу, и много личных предпочтений. Многие люди, использующие WinDbg, используют только WinDbg, поэтому они лучше всего подходят для отладки.

WinDbg также имеет несколько хороших расширений, таких как SOS. Таким образом, конкретное расширение может предоставить вам конкретную информацию, которой нет у другого отладчика.

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

Подводя итог, для большинства вопросов это не имеет значения. Это то, что вы лучше всего умеете использовать. Для некоторых конкретных проблем важно то, что вы говорите, зная, какой инструмент лучше всего подходит для этой конкретной проблемы.

person Luke Kim    schedule 20.02.2011

Хотя 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 на той же машине, но вы можете проанализировать содержимое памяти и так далее.

person Antti    schedule 20.02.2011
comment
Является ли отладка в режиме ядра для полных сбоев системы? - person Jon; 21.02.2011

Хорошая точка зрения. Еще одно хорошее решение для отладки виртуального ядра — LiveKd от sysinternals.

http://technet.microsoft.com/en-us/sysinternals/bb897415.aspx

person Luke Kim    schedule 21.02.2011