Destinos de User-Mode ao vivo

Os métodos para criar e anexar a processos listados neste tópico podem ser usados para o computador local e para um computador remoto que executa um servidor de processo.

Um processo de modo de usuário pode ser criado usando Create Process ou CreateProcess2, que executa um determinado comando para criar um processo. O método AttachProcess pode ser usado para anexar o mecanismo de depurador a um processo de modo de usuário existente. CreateProcessAndAttach e CreateProcessAndAttach2 criam um novo processo de modo de usuário e se anexam a ele ou a outro processo de modo de usuário no mesmo computador. As operações desolicitação DEBUG_REQUEST_GET_ADDITIONAL_CREATE_OPTIONS, DEBUG_REQUEST_SET_ADDITIONAL_CREATE_OPTIONS e DEBUG_REQUEST_SET_LOCAL_IMPLICIT_COMMAND_LINE podem ser usadas para definir algumas das opções padrão para criar processos.

Nota O mecanismo não se anexa completamente ao processo até que o método WaitForEvent seja chamado. Somente depois que o processo tiver gerado um evento , por exemplo, o evento de criação do processo , ele ficará disponível na sessão do depurador. Confira Modelo de Execução e Sessão de Depuração para obter mais detalhes.

O método GetRunningProcessSystemIds retornará as IDs de processo de todos os processos em execução no computador. A ID do processo de um programa específico pode ser encontrada usando GetRunningProcessSystemIdByExecutableName. Dada uma ID de processo, uma descrição do processo é retornada por GetRunningProcessDescription.

Opções de processo

As opções de processo determinam parte do comportamento do mecanismo quando anexado a um processo de modo de usuário, incluindo se o mecanismo de depurador será anexado automaticamente aos processos filho criados pelo processo de destino e o que o mecanismo faz com os processos de destino quando ele é encerrado. Consulte DEBUG_PROCESS_XXX para obter uma descrição das opções de processo.

As opções de processo podem ser consultadas usando GetProcessOptions. Eles podem ser alterados usando AddProcessOptions, RemoveProcessOptions e SetProcessOptions.

Desconectando-se de processos

Há três maneiras diferentes de o mecanismo se desconectar de um processo.

  1. Desanexação. Retome todos os threads no processo para que ele continue em execução, não sendo mais depurado. DetachCurrentProcess desanexará o mecanismo do processo atual e DetachProcesses desanexará o mecanismo de todos os processos. Nem todos os destinos dão suporte à desanexação. A operação De solicitação DEBUG_REQUEST_TARGET_CAN_DETACH pode ser usada para marcar se o destino der suporte à desanexação.

  2. Encerrar. Tente acabar com o processo. TerminateCurrentProcess encerrará o processo atual e TerminateProcesses encerrará todos os processos na sessão do depurador.

  3. Abandone. Remova o processo da lista de processos que estão sendo depurados. O sistema operacional ainda considerará o processo como depurado e permanecerá suspenso até que outro depurador o anexe ou seja morto. AbandonCurrentProcess abandonará o processo atual.