Неинвазивная отладка (пользовательский режим)

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

В неинвазивной отладке отладчик фактически не подключается к целевому приложению. Отладчик приостанавливает все потоки целевого объекта и имеет доступ к памяти целевого объекта, регистрам и другим подобным сведениям. Однако отладчик не может управлять целевым объектом, поэтому такие команды, как g (Go), не работают.

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

Выбор процесса для отладки

Целевое приложение можно указать по идентификатору процесса (PID) или имени процесса.

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

Дополнительные сведения об определении идентификатора и имени процесса см. в разделе Поиск идентификатора процесса.

Сведения о запуске и остановке неинвазивного сеанса отладки см. в следующих разделах:

Командная строка CDB

Для неинвазивной отладки выполняющегося процесса из командной строки CDB укажите параметр -pv, параметр -p и идентификатор процесса в следующем синтаксисе.

cdb -pv -pProcessID

Или для неинвазивной отладки выполняющегося процесса путем указания имени процесса используйте следующий синтаксис.

cdb -pv -pnProcessName

Существует несколько других полезных параметров командной строки. Дополнительные сведения о синтаксисе командной строки см. в разделе Параметры Command-Line CDB.

Командная строка WinDbg

Чтобы не выполнять отладку выполняющегося процесса из командной строки WinDbg, укажите параметр -pv, параметр -p и идентификатор процесса в следующем синтаксисе.

windbg -pv -pProcessID

Или для неинвазивной отладки выполняющегося процесса путем указания имени процесса используйте следующий синтаксис.

windbg -pv -pnProcessName

Существует несколько других полезных параметров командной строки. Дополнительные сведения о синтаксисе командной строки см. в разделе Параметры Command-Line WinDbg.

Меню WinDbg

Если WinDbg находится в неактивном режиме, вы можете неинвазивно отлаживать выполняющийся процесс, щелкнув Присоединиться к процессу в меню Файл или нажав клавишу F6.

Когда откроется диалоговое окно Присоединение к процессу, выберите неинвазивный проверка. Затем выберите строку, содержащую нужные идентификатор и имя процесса. (Вы также можете ввести идентификатор процесса в поле Идентификатор процесса.) Наконец, нажмите кнопку ОК.

Командное окно отладчика

Если отладчик уже активен, вы можете выполнить неинвазивную отладку выполняющегося процесса с помощью команды .attach -v (Присоединить к процессу) в окне Команда отладчика.

Команду .attach можно использовать, если отладчик уже выполняет инвазивную отладку одного или нескольких процессов. Эту команду можно использовать в CDB, если она неактивна, но не находится в неактивном WinDbg.

Если команда .attach -v выполнена успешно, отладчик выполняет отладку указанного процесса в следующий раз, когда отладчик выдает команду выполнения. Так как выполнение во время неинвазивной отладки запрещено, отладчик не может выполнять неинвазивную отладку нескольких процессов одновременно. Это ограничение также означает, что использование команды .attach -v может сделать существующий инвазивный сеанс отладки менее полезным.

Начало сеанса отладки

Дополнительные сведения о том, как начать сеанс отладки, см. в разделе Операция отладки.