Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O DE (mecanismo de depuração) normalmente envia um dos seguintes eventos como o último evento de inicialização:
O evento de ponto de entrada, se estiver anexando a um programa recém-iniciado
O evento de carregamento completo, se estiver anexando a um programa que já está em execução
Ambos os eventos são eventos de interrupção, o que indica que o DE fica aguardando uma resposta do usuário através do IDE. Para obter mais informações, consulte os modos operacionais.
Parar 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 na interface do evento.
O IDE determina o arquivo e a posição do código-fonte atual, que ele exibe como realçado no editor.
A sessão de depuração normalmente responde a esse primeiro evento de parada chamando o método Continue do programa.
Em seguida, o programa é executado até encontrar uma condição de parada, como atingir um ponto de interrupção. Nesse caso, o DE envia um evento de ponto de interrupção para a sessão de depuração. O evento de ponto de interrupção é um evento de parada, e o DE aguarda novamente uma resposta do usuário.
Se o usuário optar por entrar, pular sobre ou sair de uma função, o IDE solicitará que a sessão de depuração chame o método do
Stepprograma. Em seguida, a IDE passa a unidade de etapa (instrução, declaração ou linha) e o tipo de etapa (se é para entrar na função, passar por cima ou sair dela). Quando a etapa for concluída, o DE enviará um evento de conclusão de etapa para a sessão de depuração, que constitui um evento de interrupção.- ou -
Se o usuário optar por continuar executando do ponteiro de instrução atual, a IDE solicitará que a sessão de depuração chame o método Execute do programa. O programa retoma a execução até encontrar a próxima condição de parada.
- ou -
Se a sessão de depuração for ignorar um evento de interrupção específico, a sessão de depuração chamará o método Continue do programa. Se o programa estava entrando, ultrapassando ou saindo de uma função quando encontrou a condição de parada, ele continua a etapa.
Programaticamente, quando o DE encontra uma condição de parada, ele envia eventos de parada como IDebugLoadCompleteEvent2 ou IDebugEntryPointEvent2 para o SDM (gerenciador de depuração de sessão) por meio de uma interface IDebugEventCallback2 . O DE passa as interfaces IDebugProgram2 e IDebugThread2 que representam o programa e o thread que contém o ponteiro de instrução atual. O SDM chama IDebugThread2::EnumFrameInfo para obter o quadro de pilha superior e chama IDebugStackFrame2::GetDocumentContext para obter o contexto do documento associado ao ponteiro de instrução atual. Esse contexto de documento normalmente é um nome de arquivo de código-fonte, linha e número de coluna. O IDE os usa para realçar o código-fonte que contém o ponteiro de instrução atual.
O SDM normalmente responde a esse primeiro evento de parada chamando IDebugProgram2::Continue. Em seguida, o programa é executado até encontrar uma condição de parada, como atingir um ponto de interrupção. Nesse caso, o DE envia uma interface IDebugBreakpointEvent2 para o SDM. O evento de ponto de interrupção é um evento de parada, e o DE aguarda novamente uma resposta do usuário.
Se o usuário optar por entrar, saltar ou sair de uma função, o IDE solicitará que o SDM chame IDebugProgram2::Step. Em seguida, o IDE passa o STEPUNIT (instrução, instrução ou linha) e o STEPKIND, ou seja, se deseja entrar, ultrapassar ou sair da função. Quando a etapa for concluída, o DE enviará uma interface IDebugStepCompleteEvent2 para o SDM, que é um evento de parada.
Se o usuário optar por continuar a execução a partir do ponteiro de instrução atual, o IDE pedirá ao SDM para chamar IDebugProgram2::Execute. O programa retoma a execução até encontrar a próxima condição de parada.
Se o pacote de depuração for ignorar um evento de parada específico, o pacote de depuração chamará o SDM, que chama IDebugProgram2::Continue. Se o programa estava entrando, ultrapassando ou saindo de uma função quando encontrou a condição de parada, ele continua a etapa. Isso implica que o programa mantém um estado de etapa, para que ele saiba como continuar.
As chamadas feitas pelo SDM para
Step, Executar e Continuar são assíncronas, o que significa que o SDM espera que a chamada retorne rapidamente. Se o DE enviar ao SDM um evento de parada no mesmo thread antes deStep, Executar ou Continuar retornarem, o SDM deixará de responder.