Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Одновременно можно выполнять отладку нескольких файлов дампа или динамических приложений в режиме пользователя. Каждый целевой объект содержит один или несколько процессов, и каждый процесс содержит один или несколько потоков.
Эти целевые объекты также группируются в системы. Системы представляют собой наборы целевых объектов, которые группируются вместе для простой идентификации и манипуляции. Системы определяются следующим образом:
Каждый файл дампа в режиме ядра или в пользовательском режиме является отдельной системой.
При отладке динамических приложений в режиме пользователя на разных компьютерах (с помощью сервера обработки, например Dbgsrv), каждое приложение является отдельной системой.
При отладке динамических приложений в режиме пользователя на локальном компьютере приложения объединяются в одну систему.
Текущая или активная система — это система, которую вы сейчас отлаживаете.
Получение нескольких целевых объектов
Первый целевой объект приобретается обычным образом.
Вы можете выполнять отладку дополнительных динамических приложений в режиме пользователя с помощью команды .attach (Attach to Process) или CREATE (Create Process), а затем команды g (Go).
Вы можете отлаживать дополнительные файлы дампа с помощью команды opendump (Open Dump File)и команды g (Go). При запуске отладчика можно также открыть несколько файлов дампа. Чтобы открыть несколько файлов дампа, включите несколько коммутаторов -z в команду, за каждым из которых следует другое имя файла.
Предыдущие команды можно использовать, даже если процессы находятся в разных системах. Необходимо запустить сервер обработки в каждой системе, а затем использовать параметр -premote с .attach или .create , чтобы определить соответствующий сервер обработки. Если вы снова используете команду .attach или .create , не указывая параметр -premote, отладчик присоединяется или создает процесс в текущей системе.
Управление системами и целевыми объектами
При начале отладки текущая система — это та, к которой недавно был подключен отладчик. При возникновении исключения текущая система переключается на систему, в которую произошло это исключение.
Чтобы закрыть один целевой объект и продолжить отладку других целевых объектов, используйте команду kill (Kill Process). Вы можете использовать команду .detach (Отсоединение от процесса) или команду меню Отладка | Отсоединить отлаживаемое приложение в WinDbg. Эти команды отсоединяют отладчик от целевого объекта, но оставьте целевой объект запущенным.
Для управления отладкой нескольких систем можно использовать следующие методы:
|| (Состояние системы) команда отображает сведения об одной или нескольких системах
||Команда s (Set Current System) позволяет выбрать текущую систему.
(только WinDbg) Окно "Процессы и потоки " позволяет отображать или выбирать системы, процессы и потоки.
С помощью этих команд для выбора текущей системы и использования стандартных команд для выбора текущего процесса и потока можно определить контекст команд, отображающих память и регистры.
Однако вы не можете разделить выполнение этих процессов. Команда g (Go) всегда приводит к тому, чтобы все целевые объекты выполнялись вместе.
Заметка При отладке динамических целевых объектов и целевых объектов дампа возникают сложности, так как команды ведут себя по-разному для каждого типа отладки. Например, если вы используете команду g (Go), когда текущая система является файлом дампа, отладчик начинает выполняться, но вы не можете вернуться к отладчику, так как команда останова не распознается как допустимая для отладки файла дампа.
Пример
Для работы с тремя файлами дампа одновременно можно использовать параметр -z для их загрузки при запуске WinDbg.
windbg -z c:\notepad.dmp -z c:\paint.dmp -z c:\calc.dmp
Дополнительные сведения см. в разделе "Параметры" Command-Line WinDbg. Вы также можете использовать команды opendump и g (Go) для загрузки дополнительных файлов дампа в отладчик.
Используйте команду || (Состояние системы), чтобы убедиться, что присутствуют все три системы.
||0:0:007> ||
. 0 User mini dump: c:\notepad.dmp
1 User mini dump: C:\paint.dmp
2 User mini dump: c:\calc.dmp
Используйте команду g (Go), чтобы завершить загрузку файлов дампа.
||0:0:007> g
************* Path validation summary **************
Response Time (ms) Location
Deferred srv*
Symbol search path is: srv*
Executable search path is:
Windows 10 Version 15063 MP (4 procs) Free x64
Product: WinNt, suite: SingleUserTS
15063.0.amd64fre.rs2_release.170317-1834
Machine Name:
Debug session time: Fri Jun 9 15:52:04.000 2017 (UTC - 7:00)
System Uptime: not available
Process Uptime: 0 days 0:03:44.000
...............................................................
This dump file has a breakpoint exception stored in it.
The stored exception information can be accessed via .ecxr.
ntdll!DbgBreakPoint:
00007ff8`aada8d70 cc int 3
Затем используйте команду ||s (Задать текущую систему), чтобы установить текущую систему как систему 1, а затем отобразить текущую систему.
||1:1:017> ||1s
||1:1:017> ||
0 User mini dump: c:\notepad.dmp
. 1 User mini dump: c:\paint.dmp
2 User mini dump: c:\calc.dmp
Команду .detach можно использовать после завершения просмотра текущего файла дампа.
||1:1:017> .detach
ntdll!DbgBreakPoint:
00007ff8`aada8d70 cc int 3
Detached
||0:0:007> ||
. 0 User mini dump: c:\notepad.dmp
2 User mini dump: c:\calc.dmp
Ресурсы
Дополнительные сведения об отладке см. в следующих ресурсах.
Книги
Расширенная отладка Windows от Марио Хьюардта и Даниэля Правата
Внутри отладки Windows: практическое руководство по стратегиям отладки и трассировки в Windows от Тарик Сулами
Windows Internals под редакцией Павла Йосифовича, Алекса Ионеску, Марка Э. Руссиновича и Дэвида А. Соломона.
Видео
Шоу Defrag Tools, показы WinDbg, эпизоды 13-29: </shows/defrag-tools/>