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 pela ID do processo (PID) ou pelo nome do processo.

Se você especificar o aplicativo por 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 Localizando 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 do 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 -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 de linha de comando úteis. Para obter mais informações sobre a sintaxe de linha de comando, consulte Opções de Command-Line cdb.

Linha de comando do WinDbg

Para depurar de forma não invasiva um processo em execução na 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 -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 de linha de comando úteis. Para obter mais informações sobre a sintaxe de linha de comando, consulte Opções de Command-Line do WinDbg.

WinDbg Menu

Quando o WinDbg está no modo inativo, você não pode depurar 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, selecione a caixa marcar 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 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ê poderá usar o comando .attach se o depurador já estiver depurando um ou mais processos invasivamente. 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 depura 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.