Anexe diretamente a um programa
Os usuários que desejam depurar programas em um processo que já está em execução normalmente seguem este processo:
No IDE, abra o menu Depurar e selecione o comando Anexar ao Processo....
A caixa de diálogo Anexar ao Processo é exibida, listando todos os mecanismos de depuração (DEs) instalados na máquina.
Especifique as DEs a serem usadas para depurar o processo selecionado, escolha um processo e clique no botão Anexar.
O pacote de depuração inicia uma sessão de depuração e passa a lista de DEs para ele. A sessão de depuração, por sua vez, passa essa lista, juntamente com uma função de retorno de chamada, para o processo selecionado e então pede ao processo para enumerar seus programas em execução.
Programaticamente, em resposta à solicitação do usuário, o pacote de depuração instancia o gerenciador de depuração de sessão (SDM) e passa a lista de DEs selecionadas para ele. Junto com a lista, o pacote de depuração passa ao SDM uma interface IDebugEventCallback2. O pacote de depuração passa a lista de DEs para o processo selecionado chamando IDebugProcess2::Attach. Em seguida, o SDM chama IDebugProcess2::EnumPrograms na porta para enumerar os programas em execução no processo.
A partir deste ponto, cada mecanismo de depuração é anexado a um programa exatamente como detalhado em Anexar após uma inicialização, com duas exceções.
Para obter mais eficiência, as DEs que são implementadas para compartilhar um espaço de endereço com o SDM são agrupadas para que cada DE tenha um conjunto de programas aos quais será anexado. Nesse caso, IDebugProcess2 chama IDebugEngine2::Attach e passa uma matriz de programas para anexar.
A segunda exceção é que os eventos de inicialização enviados por um DE anexado a um programa que já está em execução normalmente não incluem o evento de ponto de entrada.