Compartilhar 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ê dispõe de menos ações de depuração. No entanto, você pode minimizar a interferência do depurador sobre 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 é efetivamente vinculado 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 alvo, 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 para depurar

Você pode especificar o aplicativo de destino pela 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 de nome de 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 Localizar a ID do processo.

Para obter informações sobre como iniciar e parar 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 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

Há 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 Command-Line CDB.

Linha de comando WinDbg

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

windbg -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.

windbg -pv -pnProcessName

Há 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 do WinDbg Command-Line.

WinDbg Menu

Quando o WinDbg está no modo inativo, você pode depurar um processo em execução de forma não invasiva 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 invasiva. 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 invasivamente um ou mais processos. 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 analisará 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 não invasivamente 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 de depurador.