Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Одновременно можно выполнять отладку нескольких файлов дампа или динамических приложений в режиме пользователя. Каждый целевой объект содержит один или несколько процессов, и каждый процесс содержит один или несколько потоков.
Эти целевые объекты также группируются в системы. Системы представляют собой наборы целевых объектов, которые группируются вместе для простой идентификации и манипуляции. Системы определяются следующим образом:
Каждый файл дампа в режиме ядра или в пользовательском режиме является отдельной системой.
При отладке динамических приложений в режиме пользователя на разных компьютерах (с помощью сервера обработки, например 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/>