Compartilhar via


DebugActiveProcess

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Essa função permite que um depurador para anexar a um ativo processo e, em seguida, depuração-lo.

Syntax

BOOL DebugActiveProcess( 
  DWORD dwProcessId 
);

Parameters

  • dwProcessId
    [no] Identificador de processo a ser depurado.

    Obtém o depurador depuração acessar para o processo da mesma maneira que teria se tiver criado o processo com o sinalizador DEBUG_ONLY_THIS_PROCESS.

    Para obter mais informações, consulte " Comentários ".

Return Value

Nonzero indica sucesso. Zero indica falha.

Para informações de erro estendidas get, chamar GetLastError.

Remarks

O DebugActiveProcess função e habilitar a função CreateProcess um segmento depurador para criar um processo e anexar para o processo ou anexar a um processo existente e depuração-lo. Essas funções devem:

  1. Parar todos os segmentos dentro de processo fornecido pelo dwProcessId.
  2. Criar ler e Gravar extremidades do fila de mensagens em tanto o depurador e os processos elemento a ser depurado.
  3. Criar um segmento para gravar o atual estado do aplicativo: Criando um processo, carregando os módulos, criar eventos depuração e assim por diante.
  4. Return para o depurador.
  5. Quando essas funções retornam, o segmento depurador precisa para chamar a função WaitForDebugEvent para processamento iniciar todos os eventos depuração do processo de destino.

Após um bem-sucedido retornar da DebugActiveProcess, quando o depurador está aguardando para depuração eventos usando o WaitForDebugEvent função, o sistema envia uma depuração CREATE_PROCESS_DEBUG_EVENT evento que identifica o primário identificador segmento que atualmente é parte do processo.

O sistema envia um individual depuração CREATE_THREAD_DEBUG_EVENT evento para cada secundário identificador segmento que atualmente é parte do processo.

Essas alças tem permissão, ou acessar direitos, para receber e definir contextos segmento usando o GetThreadContext e SetThreadContext funções.

Para depuração de CREATE_PROCESS_DEBUG_EVENT e CREATE_THREAD_DEBUG_EVENT eventos, o lpStartAddress membro das CREATE_PROCESS_DEBUG_INFO estrutura é NULL.

Fechar esses segmento manipula usando o CloseHandle função.

Nenhuma ponto de interrupção depuração inicial é definida quando DebugActiveProcess Anexa.

Windows CE 2.0 e posterior oferecem suporte interno para Just - In - depuração tempo (JIT). Manter o seguinte em mente sobre JIT depuração:

  • Você pode registrar um depurador JIT colocando o nome do seu depurador em valor do Registro de seqüência de caracteres JITDebugger No HKEY_LOCAL_MACHINE\Debug.
  • Para habilitar JIT depuração, você deve executar uma inicialização a quente na plataforma de destino Windows Embedded CE após o JITDebugger valor é adicionado ao Registro.
  • Quando o depurador é invocado por JIT depuração, o identificador do processo sendo depurado é passada sobre o linha de comando.

O depurador JIT Windows Embedded CE é um manipulador de exceção Second-chance. O depurador deve ter apropriado acessar ao processo de destino; Ele deve ser capaz de processo para acessar PROCESS_ALL_ACCESS aberto.

  • Em Windows Embedded CE, o depurador tem apropriado acessar se o identificador processo é válido. Depois que o sistema verifica o identificador processo e determina que um válido depuração anexo está sendo feito, a função retorna TRUE. O depurador, em seguida, é esperado aguardar depuração eventos usando o WaitForDebugEvent função. O sistema suspende todos os segmentos no processo e envia os eventos depurador que representa o atual estado do processo.

  • Para cada DLL carregados o espaço de endereço do processo de destino, o sistema envia uma depuração LOAD_DLL_DEBUG_EVENT evento. Organiza o sistema para o primeiro segmento no processo para executar uma instrução ponto de interrupção após ele reinicia. Continuar este segmento faz com que ele retorne ao tudo o que ele estava fazendo antes de que era o depurador anexado. Depois que essas tarefas são concluídas, o sistema reiniciará todos os segmentos no processo.

  • Quando o primeiro segmento no processo continua, ele executa uma instrução ponto de interrupção que faz com que uma depuração EXCEPTION_DEBUG_EVENT evento sejam enviadas para o depurador.

  • Depuração futuras todos os eventos são enviados para o depurador, usando o mecanismo normal e regras.

    Observação

    Para usar JIT depuração, você deve definir o seguinte valor do Registro.

    [HKEY_LOCAL_MACHINE\Debug]
    "JITDebugger": REG_SZ
    

Requirements

Header winbase.h
Library coredll.lib, Nk.lib
Windows Embedded CE Windows CE 2.0 and later
Windows Mobile Windows Mobile Version 5.0 and later

See Also

Reference

CreateProcess
GetThreadContext
SetThreadContext
WaitForDebugEvent
CREATE_PROCESS_DEBUG_INFO
CREATE_THREAD_DEBUG_INFO

Other Resources

CloseHandle