Partilhar via


Lançar um programa

Os usuários que desejam depurar um programa podem pressionar F5 para executar o depurador do IDE. Isso inicia uma série de eventos que, em última análise, resultam na conexão do IDE a um mecanismo de depuração (DE), que por sua vez é conectado, ou anexado, ao programa da seguinte maneira:

  1. O IDE primeiro chama o pacote do projeto para obter as configurações ativas de depuração do projeto da solução. As configurações incluem o diretório inicial, as variáveis de ambiente, a porta na qual o programa será executado e o DE a ser usado para criar o programa, se especificado. Essas configurações são passadas para o pacote de depuração.

  2. Se um DE for especificado, o DE chamará o sistema operacional para iniciar o programa. Como consequência do arranque do programa, o ambiente de execução do programa é carregado. Por exemplo, se um programa for escrito em MSIL, o common language runtime será invocado para executar o programa.

    -ou-

    Se um DE não for especificado, a porta chamará o sistema operativo para iniciar o programa, o que fará com que o ambiente de execução do programa seja carregado.

    Observação

    Se um DE for usado para iniciar um programa, é provável que o mesmo DE seja anexado ao programa.

  3. Dependendo se o DE ou a porta iniciou o programa, o DE ou o ambiente de execução cria uma descrição do programa, ou nó, e notifica a porta de que o programa está em execução.

    Observação

    É recomendável que o ambiente de tempo de execução crie o nó do programa, porque o nó do programa é uma representação leve de um programa que pode ser depurado. Não há necessidade de carregar um DE inteiro apenas para criar e registar um nó de programa. Se o DE foi projetado para ser executado dentro do processo do IDE, mas nenhum IDE está efetivamente em execução, precisa haver um componente que possa adicionar um nó de programação à porta.

    O programa recém-criado, juntamente com quaisquer outros programas, relacionados ou não, iniciados ou anexados a partir do mesmo IDE, compõem uma sessão de depuração.

    Programaticamente, quando o usuário pressiona F5 pela primeira vez, o pacote de depuração do Visual Studio chama o pacote de projeto (que está associado ao tipo de programa que está sendo iniciado) por meio do DebugLaunch método, que, por sua vez, preenche uma VsDebugTargetInfo2 estrutura com as configurações ativas de depuração do projeto da solução. Essa estrutura é passada de volta para o pacote de depuração por meio de uma chamada para o LaunchDebugTargets2 método. Em seguida, o pacote de depuração instancia o gerenciador de depuração de sessão (SDM), que inicia o programa que está sendo depurado e todos os mecanismos de depuração associados.

    Um dos argumentos passados para o SDM é o GUID do DE a ser usado para iniciar o programa.

    Se o GUID do DE não é GUID_NULL, o SDM cria conjuntamente o DE e, em seguida, chama o método LaunchSuspended para executar o programa. Por exemplo, se um programa é escrito em código nativo, IDebugEngineLaunch2::LaunchSuspended provavelmente chamará CreateProcess e ResumeThread (funções Win32) para executar o programa.

    Ao lançar o programa, o ambiente de execução é carregado. O DE ou o ambiente de tempo de execução, então, cria uma interface IDebugProgramNode2 para descrever o programa e em seguida passa essa interface para AddProgramNode para notificar a porta de que o programa está em execução.

    Se GUID_NULL for passado, então a porta de comunicação inicia o programa. Uma vez que o programa está em execução, o ambiente de tempo de execução cria uma IDebugProgramNode2 interface para descrever o programa e passa-lo para IDebugPortNotify2::AddProgramNode. Isso notifica a porta que o programa está em execução. Em seguida, o SDM anexa o mecanismo de depuração ao programa em execução.

Nesta secção

Notificar a porta explica o que acontece depois que um programa é iniciado e a porta é notificada.

Anexar após um lançamento documenta quando a sessão de depuração está pronta para anexar o DE ao programa.

  • As tarefas de depuração contêm links para várias tarefas de depuração, como iniciar um programa e avaliar expressões.