Отладка процесса пользовательского режима с помощью CDB
CdB можно использовать для присоединения к запущенным процессам или для присоединения и присоединения к новому процессу.
Присоединение к работающему процессу
Командная строка
В окне командной строки можно подключиться к запущенным процессам при запуске CDB. Используйте одну из следующих команд:
- cdb -p ProcessID
- cdb -pn ProcessName
Где ProcessID является идентификатором процесса выполняемого процесса или ProcessName — это имя выполняемого процесса.
Дополнительные сведения о синтаксисе командной строки см. в разделе "Параметры командной строки CDB".
Окно команд CDB
Если отладчик уже отладчик выполняет отладку одного или нескольких процессов, можно подключиться к запущенным процессам с помощью команды attach (Attach to Process).
Отладчик всегда запускает несколько целевых процессов одновременно, если некоторые из их потоков не заморожены или приостановлены.
Если команда attach успешно выполнена, отладчик присоединяется к указанному процессу при следующем выполнении команды отладчика. Если вы используете эту команду несколько раз в строке, выполнение должно запрашиваться отладчиком столько раз, сколько вы используете эту команду.
Присоединение к выполняющимся процессам, неисключаемо
Если вы хотите выполнить отладку выполняющегося процесса и вмешиваться только минимально в его выполнении, следует отлаживать процесс , неисправно.
Командная строка
Чтобы не отлаживать выполняющийся процесс из командной строки CDB, укажите параметр -pv , параметр -p и идентификатор процесса в следующем синтаксисе.
cdb -pv -p ProcessID
Кроме того, чтобы выполнить невиновную отладку выполняемого процесса, указав имя процесса, используйте следующий синтаксис.
cdb -pv -pn ProcessName
Существует несколько других полезных параметров командной строки. Дополнительные сведения о синтаксисе командной строки см. в разделе "Параметры командной строки CDB".
Окно команд CDB
Если отладчик уже активен, можно невиновно отладить выполняющийся процесс, введя команду .attach -v (Присоединение к процессу).
Команду .attach можно использовать, если отладчик уже отлаживать один или несколько процессов инвазивно.
Если команда attach -v успешно выполнена, отладчик отладчик выполняет указанную процедуру при следующем выполнении команды. Так как выполнение не допускается во время неисправной отладки, отладчик не может выполнять неисправную отладку нескольких процессов одновременно. Это ограничение также означает, что использование команды .attach -v может сделать существующий инвазивный сеанс отладки менее полезным.
Создание нового процесса
CDB может запустить приложение в пользовательском режиме, а затем отладить приложение. Приложение указывается по имени. Отладчик также может автоматически присоединяться к дочерним процессам (дополнительные процессы, запущенные исходным целевым процессом).
Процессы, создаваемые отладчиком (также известные как разреженные процессы), ведут себя немного иначе, чем процессы, которые отладчик не создает.
Вместо использования стандартного API кучи процессы, создаваемые отладчиком, используют специальную отладочную кучу. Вы можете принудительно применить стандартную кучу вместо отладочной кучи с помощью переменной среды _NO_DEBUG_HEAP или параметра командной строки -hd.
Кроме того, поскольку целевое приложение является дочерним процессом отладчика, оно наследует разрешения отладчика. Это разрешение может позволить целевому приложению выполнять определенные действия, которые не удалось выполнить в противном случае. Например, целевое приложение может повлиять на защищенные процессы.
В окне командной строки при запуске CDB можно создать новый процесс. Введите следующую команду.
cdb [-o] ProgramName [Аргументы]
Параметр -o приводит к присоединению отладчика к дочерним процессам. Существует несколько других полезных параметров командной строки. Дополнительные сведения о синтаксисе командной строки см. в разделе "Параметры командной строки CDB".
Если отладчик уже отладчик выполняет отладку одного или нескольких процессов, можно создать новый процесс, введя команду CREATE (Create Process).
Отладчик всегда запускает несколько целевых процессов одновременно, если некоторые из них не заморожены или приостановлены.
Если команда create выполнена успешно, отладчик создает указанный процесс при следующем выполнении команды отладчика. Если вы используете эту команду несколько раз в строке, выполнение должно запрашиваться отладчиком столько раз, сколько вы используете эту команду.
Перед созданием приложения можно управлять начальным каталогом приложения с помощью команды createir (Set Create Process Directory). Вы можете использовать команду .createdir -I или параметр командной строки -noinh , чтобы контролировать, наследует ли целевое приложение дескриптор отладчика.
Вы можете активировать или отключить отладку дочерних процессов с помощью команды .childdbg (отладка дочерних процессов).
Повторное присоединение к процессу
Если отладчик перестает отвечать или зависает, можно подключить новый отладчик к целевому процессу. Дополнительные сведения о подключении отладчика в этой ситуации см. в разделе "Повторное подключение к целевому приложению".