Compartilhar via


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:

  1. 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.

  2. 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.