Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Você pode usar CDB para anexar a um processo em execução ou para gerar e anexar a um novo processo.
Anexando a um processo em execução
Prompt de comando
Em uma janela de prompt de comando, você pode anexar a um processo em execução ao iniciar o CDB. Use um dos seguintes comandos:
- cdb -pProcessID
- cdb -pnProcessName
onde ProcessID é a ID de processo de um processo em execução ou ProcessName é o nome de um processo em execução.
Para obter mais informações sobre a sintaxe da linha de comando, consulte Opções de Command-Line CDB.
Janela de comando CDB
Se o depurador já estiver depurando um ou mais processos, você poderá anexar a um processo em execução usando o comando .attach (Anexar ao processo ).
O depurador sempre inicia vários processos alvo simultaneamente, a menos que alguns dos seus threads estejam congelados ou suspensos.
Se o comando .attach for bem-sucedido, o depurador será anexado ao processo especificado na próxima vez que o depurador emitir um comando de execução. Se você usar esse comando várias vezes seguidas, a execução deverá ser solicitada pelo depurador quantas vezes você usar esse comando.
Anexando-se a um processo em execução de forma não invasiva
Se você quiser depurar um processo em execução e interferir apenas minimamente em sua execução, você deve depurar o processo de forma não invasiva.
Prompt de comando
Para depurar de forma não invasiva um processo em execução a partir da linha de comando CDB, especifique a opção -pv , a opção -p e a ID do processo, na sintaxe a seguir.
cdb -pv -pProcessID
Ou, para depurar de forma não invasiva um processo em execução especificando o nome do processo, use a sintaxe a seguir.
cdb -pv -pnProcessName
Existem várias outras opções de linha de comando úteis. Para obter mais informações sobre a sintaxe da linha de comando, consulte Opções de Command-Line CDB.
Janela de comando CDB
Se o depurador já estiver ativo, você poderá depurar de forma não invasiva um processo em execução inserindo o comando .attach -v (Anexar ao processo ).
Você pode usar o comando .attach se o depurador já estiver depurando um ou mais processos de forma invasiva.
Se o comando .attach -v for bem-sucedido, o depurador depurará o processo especificado na próxima vez que emitir um comando de execução. Como a execução não é permitida durante a depuração não invasiva, o depurador não pode depurar de forma não invasiva mais de um processo de cada vez. Essa restrição também significa que o uso do comando .attach -v pode tornar uma sessão de depuração invasiva existente menos útil.
Gerando um novo processo
CDB pode iniciar um aplicativo de modo de usuário e, em seguida, depurar o aplicativo. O aplicativo é especificado pelo nome. O depurador também pode anexar-se automaticamente aos processos filho (processos adicionais iniciados pelo processo de destino original).
Os processos que o depurador cria (também conhecidos como processos gerados) comportam-se de forma ligeiramente diferente dos processos que o depurador não cria.
Em vez de usar a API de heap padrão, os processos que o depurador cria usam um heap de depuração especial. Você pode forçar um processo criado a usar o heap padrão em vez do heap de depuração usando a variável de ambiente _NO_DEBUG_HEAP ou a opção de linha de comando -hd.
Além disso, como o aplicativo de destino é um processo filho do depurador, ele herda as permissões do depurador. Essa permissão pode permitir que o aplicativo de destino execute determinadas ações que não poderia executar de outra forma. Por exemplo, o aplicativo de destino pode ser capaz de afetar processos protegidos.
Em uma janela de prompt de comando, você pode gerar um novo processo ao iniciar o CDB. Digite o seguinte comando.
cdb [-o]ProgramName[Argumentos]
A opção -o faz com que o depurador se anexe aos processos-filho. Existem várias outras opções de linha de comando úteis. Para obter mais informações sobre a sintaxe da linha de comando, consulte Opções de Command-Line CDB.
Se o depurador já estiver depurando um ou mais processos, você poderá criar um novo processo inserindo o comando .create (Criar processo ).
O depurador iniciará sempre vários processos de destino simultaneamente, a menos que alguns dos seus threads estejam bloqueados ou suspensos.
Se o comando .create for bem-sucedido, o depurador criará o processo especificado na próxima vez que emitir um comando de execução. Se você usar esse comando várias vezes seguidas, a execução deverá ser solicitada pelo depurador quantas vezes você usar esse comando.
Você pode controlar o diretório inicial do aplicativo usando o comando .createdir (set Created Process Directory) antes de .create. Você pode usar o comando .createdir -I ou a opção de linha de comandos -noinh para controlar se o aplicativo de destino herda os handles do depurador.
Você pode ativar ou desativar a depuração de processos filho usando o comando .childdbg (Depurar Processos Filho).
Reanexar a um processo
Se o depurador parar de responder ou congelar, você poderá anexar um novo depurador ao processo de destino. Para obter mais informações sobre como anexar um depurador nessa situação, consulte Reanexar ao aplicativo de destino.