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.
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.
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.
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:
Enviar um IDebugEngineCreateEvent2 o objeto de evento para o SDM. Para obter mais informações, consulte Envio de eventos.
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.
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
IDebugProgramNodeAttach2::OnAttach