Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Você pode usar o WinDbg para anexar a um processo em execução ou para gerar e anexar a um novo processo.
Ligando-se a um processo em execução
Há várias maneiras de usar o WinDbg para anexar a um processo em execução. Independentemente do método escolhido, você precisará do ID do processo ou do nome do processo. O ID do processo é um número atribuído pelo sistema operacional. Para obter mais informações sobre como determinar a ID do processo e o nome do processo, consulte Localizando a ID do processo.
WinDbg Menu
Quando o WinDbg está no modo latente, você pode anexar a um processo em execução escolhendo Anexar a um processo no menu Arquivo ou pressionando F6.
Na caixa de diálogo Anexar ao Processo, selecione o processo que deseja depurar e selecione OK.
Linha de comandos
Em uma janela de prompt de comando, pode-se ligar a um processo em execução ao iniciar o WinDbg. Use um dos seguintes comandos:
- windbg -pProcessID
- windbg -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 do WinDgg.
Janela de Comando do Depurador
Se o WinDbg já estiver depurando um ou mais processos, você poderá anexar a um processo em execução usando o comando .attach (Anexar ao processo) na janela Comando do depurador.
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.
WinDbg Menu
Quando o WinDbg está no modo latente, você pode depurar de forma não invasiva um processo em execução escolhendo 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, selecione OK.
Linha de comandos
Em uma janela de prompt de comando, você pode anexar a um processo em execução de forma não invasiva quando você inicia o WinDbg. Use um dos seguintes comandos:
- windbg -pv -pProcessID
- windbg -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 do WinDgg.
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ê não pode usar esse comando se WinDbg estiver inativo.
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
WinDbg 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 automaticamente a processos filho (processos adicionais que o processo de destino original iniciou).
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.
WinDbg Menu
Quando o WinDbg está no modo latente, você pode gerar um novo processo escolhendo Abrir executável no menu Arquivo ou pressionando CTRL+E.
Quando a caixa de diálogo Abrir executável for exibida, digite o caminho completo do arquivo executável na caixa Nome do arquivo ou use a lista Examinar para selecionar o caminho e o nome do arquivo desejados.
Se você quiser usar quaisquer parâmetros de linha de comando com o aplicativo de modo de usuário, digite-os na caixa Argumentos . Se você quiser alterar o diretório inicial do diretório padrão, digite o caminho do diretório na caixa Diretório inicial . Se desejar que o WinDbg se ligue a processos-filho, marque a caixa de seleção Depurar processos-filho também.
Depois de fazer suas seleções, selecione Abrir.
Linha de comandos
Em uma janela de prompt de comando, você pode gerar um novo processo ao iniciar o WinDbg. Use o seguinte comando:
windbg [-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 do WinDgg.
Janela de Comando do Depurador
Se o WinDbg já estiver depurando um ou mais processos, você poderá criar um novo processo usando o comando .create (Criar processo) na janela Comando do depurador.
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 (Debug Child Processes).
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.