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:
O programa e o thread que contêm o ponteiro de instrução atual podem ser obtidos a partir da interface de evento.
O IDE determina o arquivo de código-fonte atual e a posição, que são exibidos realçada no editor.
A sessão de depuração normalmente responde a este primeiro evento de parada, chamando o programa continuar método.
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.
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.