Поделиться через


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

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

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

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

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

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

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

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

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

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

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

cdb -pv -p ProcessID

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

cdb -pv -pn ProcessName

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

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

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

windbg -pv -p ProcessID

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

windbg -pv -pn ProcessName

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

Меню WinDbg

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

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

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

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

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

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

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

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