Mecanismo de depuração

Um DE (mecanismo de depuração) funciona com o interpretador ou o sistema operacional para fornecer serviços de depuração, como controle de execução, pontos de interrupção e avaliação de expressão. O DE é responsável por monitorar o estado de um programa que está sendo depurado. Para fazer isso, o DE usa quaisquer métodos disponíveis para ele no runtime permitido, seja da CPU ou de APIs fornecidas pelo runtime.

Por exemplo, o CLR (Common Language Runtime) fornece mecanismos para monitorar um programa em execução por meio das interfaces ICorDebugXXX. Um DE que dá suporte ao CLR usa as interfaces ICorDebugXXX apropriadas para manter o controle de um programa de código gerenciado que está sendo depurado. Em seguida, ele comunica as alterações de estado para o SDM (gerenciador de depuração de sessão), que encaminha essas informações ao IDE do Visual Studio.

Observação

Um mecanismo de depuração tem como alvo um runtime específico, ou seja, o sistema no qual o programa que está sendo depurado é executado. O CLR é o runtime para código gerenciado, e o runtime do Win32 é para aplicativos nativos do Windows. Se a linguagem que você criar puder visar um desses dois runtimes, o Visual Studio já fornecerá os mecanismos de depuração necessários. Tudo o que você precisa implementar é um avaliador de expressão.

Operação do mecanismo de depuração

Os serviços de monitoramento são implementados por meio das interfaces do DE e podem fazer com que o pacote de depuração faça a transição entre diferentes modos operacionais. Para saber obter mais informações, confira Modos operacionais. Normalmente, há apenas uma implementação do DE por ambiente de runtime.

Observação

Embora existam implementações de DE separadas para Transact-SQL e JScript, VBScript e JScript compartilham um único DE.

A depuração do Visual Studio permite que os mecanismos de depuração sejam executados de duas maneiras: no mesmo processo que o shell do Visual Studio ou no mesmo processo que o programa de destino que está sendo depurado. A última forma geralmente ocorre quando o processo que está sendo depurado é, na verdade, um script em execução sob um interpretador. O mecanismo de depuração deve ter conhecimento profundo do interpretador para monitorar o script. Nesse caso, o interpretador é, na verdade, um runtime; os mecanismos de depuração são para implementações de runtime específicas. Além disso, a implementação de um único DE pode ser dividida entre limites de processo e máquina (por exemplo, depuração remota).

O DE expõe as interfaces de depuração do Visual Studio. Toda a comunicação é por meio de COM. Se o DE for carregado em processo, fora de processo ou em outro computador, ele não afetará a comunicação do componente.

O DE funciona com um componente avaliador de expressão para que o DE desse runtime específico possa compreender a sintaxe das expressões. O DE também funciona com um componente manipulador de símbolos para acessar as informações de depuração simbólica geradas pelo compilador de linguagem. Para obter mais informações, confira Avaliador de expressão e Provedor de símbolos.

Confira também