Partilhar via


Controle de execução

O mecanismo de depuração (DE) normalmente envia um dos seguintes eventos como o último evento de inicialização:

  • O evento de ponto de entrada, se anexar a um programa recém-lançado

  • Completa evento load, se anexar a um programa que já está executando

Ambos esses eventos estão parando de eventos, o que significa que o DE aguarda uma resposta do usuário por meio do IDE. Para obter mais informações, consulte Modos operacionais.

Parando evento

Quando um evento de parada é enviado para a sessão de depuração:

  1. O programa e o thread que contêm o ponteiro de instrução atual podem ser obtidos a partir da interface de evento.

  2. O IDE determina o arquivo de código-fonte atual e a posição, que são exibidos realçada no editor.

  3. A sessão de depuração normalmente responde a este primeiro evento de parada, chamando o programa continuar método.

  4. Em seguida, o programa é executado até que encontre uma condição de parada, como, por exemplo, alcançar um ponto de interrupção, no qual o caso DE envia um evento de ponto de interrupção para a sessão de depuração. O ponto de interrupção é um evento de parada e o DE novamente aguarda uma resposta do usuário.

  5. Se o usuário escolhe o Step into, mais ou de uma função, o IDE solicita que a sessão de depuração para chamar o programa Step método, passando-a unidade de etapa (instrução, instrução ou linha) e o tipo de etapa — ou seja, se entrar em, acima ou da função. Quando a etapa estiver concluída, o DE envia um evento de conclusão de etapa para a sessão de depuração, que é um evento de parada.

    - ou -

    Se o usuário optar por continuar executando a partir do ponteiro de instrução atual, o IDE solicita que a sessão de depuração para chamar o programa Execute método. O programa continua a execução até encontrar a próxima condição de parada.

    - ou -

    Se a sessão de depuração é ignorar um evento de parada específico, a sessão de depuração chama o programa continuar método. Se o programa foi stepping em, acima ou de uma função quando ele encontrou a condição de parada, em seguida, continua a etapa.

Programaticamente, quando o DE encontra uma condição de parada, ele envia eventos parar como IDebugLoadCompleteEvent2 ou IDebugEntryPointEvent2 para o Gerenciador de depuração de sessão (SDM) por meio de um IDebugEventCallback2 interface. Os passos da IDebugProgram2 e IDebugThread2 interfaces que representam o programa e o segmento que contém o ponteiro de instrução atual. As chamadas SDM IDebugThread2::EnumFrameInfo para obter o quadro superior da pilha e chamadas IDebugStackFrame2::GetDocumentContext para obter o contexto de documento associado com o ponteiro de instrução atual. Neste contexto de documento geralmente é um código arquivo nome, linha e coluna número de origem. O IDE usa esses para realçar o código-fonte que contém o ponteiro de instrução atual.

O SDM normalmente responde a este primeiro evento de parada chamando IDebugProgram2::Continue. O programa é executado, em seguida, até encontrar uma condição de parada, como, por exemplo, alcançar um ponto de interrupção, no qual envia o caso DE um IDebugBreakpointEvent2 Interface para o SDM. O ponto de interrupção é um evento de parada e o DE novamente aguarda uma resposta do usuário.

Se o usuário escolhe o Step into, mais ou de uma função, o IDE solicita que o SDM para chamar IDebugProgram2::Step, passando-o STEPUNIT (instrução, instrução ou linha) e o STEPKIND, ou seja, se entrar em, acima ou da função. Quando a etapa estiver concluída, o DE envia um IDebugStepCompleteEvent2 interface para o SDM, que é um evento de parada.

Se o usuário optar por continuar executando a partir do ponteiro de instrução atual, o IDE pede que o SDM para chamar IDebugProgram2::Execute. O programa continua a execução até encontrar a próxima condição de parada.

Se o pacote de depuração é ignorar um evento de parada específico, o pacote de depuração chama o SDM, que chama IDebugProgram2::Continue. Se o programa foi stepping em, acima ou de uma função quando ele encontrou a condição de parada, em seguida, continua a etapa. Isso implica que o programa mantém um estado de revisão, para que ele saiba como continuar.

As chamadas que faz o SDM Step, Execute, e continuar são assíncrona, que significa que o SDM espera a chamada para retornar rapidamente. Se o DE enviará o SDM um evento de parada no mesmo thread antes de Step, Execute, ou continuar retorna o SDM trava.

Consulte também

Conceitos

Tarefas de depuração