Partilhar via


Anexar ao programa.

Depois de registrar seus programas com a porta apropriada, você deve anexar o depurador para o programa que você deseja depurar.

Escolher como anexar

Há três maneiras em que o Gerenciador de sessão de depuração (SDM) tenta anexar a programa que está sendo depurado.

  1. Para programas que são iniciados pelo mecanismo de depuração através do IDebugEngineLaunch2::LaunchSuspended obtém do método (típico de idiomas interpretados, por exemplo), o SDM o IDebugProgramNodeAttach2 da interface da IDebugProgramNode2 objeto associado com o programa que está sendo anexado a. Se o SDM pode obter o IDebugProgramNodeAttach2 o SDM interface, em seguida, chama o IDebugProgramNodeAttach2::OnAttach método. O IDebugProgramNodeAttach2::OnAttach método retorna S_OK para indicar que ele não o anexou ao programa e que podem ser feitas outras tentativas para anexar ao programa.

  2. Se o SDM pode obter o IDebugProgramEx2 interface do programa sendo associada, as chamadas SDM a IDebugProgramEx2::Attach método. Essa abordagem é típica para programas que foram iniciados remotamente pelo fornecedor de porta.

  3. Se o programa não pode ser anexado por meio do IDebugProgramNodeAttach2::OnAttach ou IDebugProgramEx2::Attach métodos, o SDM carrega o mecanismo de depuração (se ainda não estiver carregado) chamando o CoCreateInstance função e, em seguida, chama o IDebugEngine2::Attach método. Essa abordagem é típica para programas iniciados localmente por um fornecedor de porta.

    Também é possível para um fornecedor de porta personalizada chamar o IDebugEngine2::Attach método na implementação do fornecedor porta personalizada da IDebugProgramEx2::Attach método. Normalmente nesse caso, o fornecedor de porta personalizada inicia o mecanismo de depuração na máquina remota.

Anexo é obtido quando o Gerenciador de sessão de depuração (SDM) chama o IDebugEngine2::Attach método.

Se você executar o DE no mesmo processo como o aplicativo a ser depurado, então você deve implementar os seguintes métodos de IDebugProgramNode2:

Após a IDebugEngine2::Attach método é chamado, siga estas etapas em sua implementação da IDebugEngine2::Attach método:

  1. Enviar um IDebugEngineCreateEvent2 o objeto de evento para o SDM. Para obter mais informações, consulte Envio de eventos.

  2. Chamar o IDebugProgram2::GetProgramId método na IDebugProgram2 objeto que foi passado para o IDebugEngine2::Attach método.

    Isso retorna um GUID que é usado para identificar o programa. O GUID deve ser armazenado no objeto que representa o local do programa para o DE, e ele deve ser retornado quando o IDebugProgram2::GetProgramId método for chamado na IDebugProgram2 interface.

    Dica

    Se você implementar a IDebugProgramNodeAttach2 , da interface do programa GUID é passado para o IDebugProgramNodeAttach2::OnAttach método.Isso GUID é usado para o programa GUID retornado pela IDebugProgram2::GetProgramId método.

  3. Enviar um IDebugProgramCreateEvent2 o objeto de evento para notificar o SDM que local IDebugProgram2 objeto foi criado para representar o programa para DE. Para obter detalhes, consulte:Envio de eventos.

    Dica

    Não é o mesmo IDebugProgram2 objeto que foi passado para o IDebugEngine2::Attach método.Anteriormente passado IDebugProgram2 objeto é reconhecido pela porta apenas e é um objeto separado.

Consulte também

Referência

IDebugEngineLaunch2::LaunchSuspended

IDebugProgram2

IDebugProgramCreateEvent2

IDebugProgramNodeAttach2

IDebugProgramNodeAttach2::OnAttach

IDebugProgramNode2

IDebugProgram2::GetProgramId

IDebugProgramEx2

IDebugProgramEx2::Attach

IDebugEngine2::Attach

Conceitos

Com base no lançamento anexo

Envio de eventos