Operador de contexto no Depurador do Visual Studio (C++)

Você pode usar o operador de contexto em C++ para qualificar um local de ponto de interrupção, um nome de variável ou uma expressão. O operador de contexto é útil para especificar um nome de um escopo externo que, de outra forma, estaria oculto por um nome local.

Sintaxe

Há duas maneiras de especificar o contexto:

  1. {,,[module] } expression

    As chaves devem conter duas vírgulas e o nome do módulo (executável ou DLL) ou o caminho completo.

    Por exemplo, para definir um ponto de interrupção na função SomeFunction de EXAMPLE.dll:

    {,,EXAMPLE.dll}SomeFunction
    
  2. module!expression

    EXAMPLE.dll!SomeFunction
    
  • module é o nome de um módulo. Você pode usar um caminho completo para resolver a ambiguidade entre módulos com o mesmo nome.

    Se o caminho do módulo inclui uma vírgula, um espaço inserido ou uma chave, você deverá usar aspas em torno do caminho de modo que o analisador de contexto possa reconhecer corretamente a cadeia de caracteres. As aspas simples são consideradas parte de um nome de arquivo do Windows, portanto, você deve usar aspas duplas. Por exemplo,

    {,,"a long, long, library name.dll"} g_Var
    
  • expression é qualquer expressão C++ válida que resolve para um destino válido, como um nome de função, nome da variável ou endereço de ponteiro no module.

    Quando o avaliador de expressão localiza um símbolo em uma expressão, procura pelo símbolo na seguinte ordem:

  1. Escopo léxico externo, começando com o bloco atual, série de instruções incluídas entre chaves e a continuação externa com o bloco delimitador. O bloco atual é o código que contém o local atual, endereço do ponteiro de instrução.

  2. Escopo da função. A função atual.

  3. Escopo da classe, se o local atual estiver dentro de uma função de membro C ++. O escopo da classe inclui todas as classes base. O avaliador de expressão usa regras de dominância normais.

  4. Símbolos globais no módulo atual.

  5. Símbolos públicos no programa atual.