DebugActiveProcess
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:
- Parar todos os segmentos dentro de processo fornecido pelo dwProcessId.
- Criar ler e Gravar extremidades do fila de mensagens em tanto o depurador e os processos elemento a ser depurado.
- 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.
- Return para o depurador.
- 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