Partilhar via


Depuração não invasiva (modo de usuário)

Se um aplicativo de modo de usuário já estiver em execução, o depurador poderá depurá-lo de forma não invasiva. Com a depuração não invasiva, você não tem tantas ações de depuração. No entanto, você pode minimizar a interferência do depurador com o aplicativo de destino. A depuração não invasiva será útil se o aplicativo de destino tiver parado de responder.

Na depuração não invasiva, o depurador não é realmente anexado ao aplicativo de destino. O depurador suspende todos os threads do destino e tem acesso à memória, aos registros e a outras informações do destino. No entanto, o depurador não pode controlar o destino, portanto, comandos como g (Go) não funcionam.

Se você tentar executar comandos que não são permitidos durante a depuração não invasiva, receberá uma mensagem de erro informando: "O depurador não está anexado, portanto, a execução do processo não pode ser monitorada".

Selecionando o processo a ser depurado

Você pode especificar o aplicativo de destino pelo ID do processo (PID) ou pelo nome do processo.

Se você especificar o aplicativo pelo nome, deverá usar o nome completo do processo, incluindo a extensão do nome do arquivo. Se dois processos tiverem o mesmo nome, você deverá usar a ID do processo.

Para obter mais informações sobre como determinar a ID do processo e o nome do processo, consulte Localizando a ID do processo.

Para obter informações sobre como iniciar e interromper uma sessão de depuração não invasiva, consulte os seguintes tópicos:

Linha de comando CDB

Para depurar de forma não invasiva um processo em execução na linha de comando do CDB, especifique a opção -pv, a opção -p e a ID do processo na sintaxe a seguir.

cdb -pv -p ProcessID

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 -pn Nome_do_processo

Existem várias outras opções úteis de linha de comando. Para obter mais informações sobre a sintaxe da linha de comando, consulte Opções de linha de comando do CDB.

Linha de comando do WinDbg

Para depurar de forma não invasiva um processo em execução da linha de comando do WinDbg, especifique a opção -pv, a opção -p e a ID do processo na sintaxe a seguir.

windbg -pv -p ProcessID

Ou, para depurar de forma não invasiva um processo em execução especificando o nome do processo, use a sintaxe a seguir.

windbg -pv -pn Nome do processo

Existem várias outras opções úteis de linha de comando. Para obter mais informações sobre a sintaxe de linha de comando, consulte Opções de linha de comando do WinDbg.

WinDbg Menu

Quando o WinDbg está no modo inativo, você pode depurar de forma não invasiva um processo em execução clicando em Anexar a um Processo no menu Arquivo ou pressionando F6.

Quando a caixa de diálogo Anexar ao Processo for exibida, marque a caixa de seleção Não Invasivo. Em seguida, selecione a linha que contém a ID do processo e o nome desejados. (Você também pode inserir a ID do processo na caixa ID do processo.) Por fim, clique em OK.

Janela de comando do depurador

Se o depurador já estiver ativo, você poderá depurar de forma não invasiva um processo em execução usando o comando .attach -v (Anexar ao Processo) na janela Comando do Depurador.

Você pode usar o comando .attach se o depurador já estiver depurando um ou mais processos de forma invasiva. Você pode usar esse comando no CDB se ele estiver inativo, mas não em um WinDbg inativo.

Se o comando .attach -v for bem-sucedido, o depurador depurará o processo especificado na próxima vez que o depurador 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 por 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.

Iniciando a sessão de depuração

Para obter mais informações sobre como iniciar uma sessão de depuração, consulte Operação do depurador.