Partilhar via


Anexando após um lançamento.

Depois que um programa tiver sido iniciado, a sessão de depuração está pronta para anexar o mecanismo de depuração (DE) ao programa disse.

Decisões de design

Como a comunicação é mais fácil dentro de um espaço de endereço compartilhado, você deve decidir se faz mais sentido para facilitar a comunicação entre a sessão de depuração e DE, ou entre DE e o programa. Escolha entre os seguintes:

  • Se fizer mais sentido para facilitar a comunicação entre a sessão de depuração e DE, a sessão de depuração co-creates DE e solicita que o DE anexar ao programa. Isso deixa a sessão de depuração e DE juntos em um espaço de endereçamento e o ambiente de tempo de execução e o programa juntos em outro.

  • Se fizer mais sentido para facilitar a comunicação entre o DE e o programa, o ambiente de tempo de execução co-creates DE. Isso deixa o SDM no espaço de um endereço e o DE, ambiente de tempo de execução e programa juntos em outro. Isso é típico de um DE implementado com um intérprete para executar scripts de idiomas.

    Dica

    Como o DE anexa ao programa é dependente de implementação.A comunicação entre o programa e o DE também é dependente da implementação.

Implementação

Programaticamente, quando o Gerenciador de sessão de depuração (SDM) pela primeira vez recebe o IDebugProgram2 o objeto que representa o programa seja iniciado, ele chama o IDebugProgram2::Attach método, passando um IDebugEventCallback2 objeto, que é posterior usado para passar o evento de depuração para o SDM. O IDebugProgram2::Attach método chama o IDebugProgramNodeAttach2::OnAttach método. Para obter mais informações sobre como o SDM recebe o IDebugProgram2 interface, consulte Notificando a porta.

Se seu DE precisa ser executado no mesmo espaço de endereço como o programa que está sendo depurado, geralmente porque o DE faz parte de um interpretador em execução de um script, o IDebugProgramNodeAttach2::OnAttach método retorna S_FALSE, indicando que ele concluiu o processo de anexar.

Se, por outro lado, o DE é executado no espaço de endereço do SDM, o IDebugProgramNodeAttach2::OnAttach método retorna S_OK ou o IDebugProgramNodeAttach2 interface não é implementada em todos os diante do IDebugProgramNode2 objeto associado ao programa que está sendo depurado. Nesse caso, o IDebugEngine2::Attach método é chamado, eventualmente, para concluir a operação de anexação.

No último caso, você deve chamar o IDebugProgram2::GetProgramId método no IDebugProgram2 objeto que foi passado para o IDebugEngine2::Attach método, armazenar o GUID no programa local de objeto e, em seguida, retorne a esta GUID quando o IDebugProgram2::GetProgramId método é chamado posteriormente neste objeto. O GUID é usado para identificar o programa exclusivamente entre os vários componentes de depuração.

Observe que no caso do IDebugProgramNodeAttach2::OnAttach método retornar S_FALSE, o GUID a ser usada para o programa é passada para o método e é o IDebugProgramNodeAttach2::OnAttach método que define o GUID no objeto de programa local.

O DE está agora anexado para o programa e pronto para enviar os eventos de inicialização.

Consulte também

Referência

IDebugEventCallback2

IDebugProgram2

IDebugProgram2::Attach

IDebugProgram2::GetProgramId

IDebugProgramNode2

IDebugProgramNodeAttach2

IDebugProgramNodeAttach2::OnAttach

IDebugEngine2::Attach

Conceitos

Anexar diretamente a um programa

Notificando a porta

Tarefas de depuração