Expressões em C++ gerenciadas
O avaliador da expressão gerenciado aceita a maioria das expressões escritas em Visual C++.Os tópicos a seguir oferecem informações específicas e discutem alguns dos tipos de expressão que não são suportados:
Identificadores e tipos
Avaliação da função
Operadores
Operadores sobrecarregados
Cadeias de caracteres
Projeções
Atribuição e comparação de objeto
Operadores typeof e sizeof
Boxing
Avaliação de propriedade
O avaliador da expressão ignora os qualificadores de acesso public, protected, internal, e private.Você pode chamar um private método a partir de Watch janela, por exemplo.
O avaliador da expressão executa todas as avaliações em um contexto seguro implícito, se o código sendo executado é seguro ou não seguro.
O depurador usa regras autoexpand para exibir o conteúdo de um tipo de dados no formulário significativo.Se você precisar, você pode adicionar elementos AutoExpandir personalizado para exibir seus próprios tipos de dados personalizados.Para obter mais informações, consulte Exibindo elementos de um tipo de dados personalizados.
Identificadores e tipos
Expressões de depurador podem usar qualquer identificador visível dentro do escopo atual.Se o depurador é interrompido na função magh, por exemplo, você pode usar qualquer identificador visível dentro do magh, incluindo constantes, nomes de variáveis e nomes de função.
O depurador corretamente pode exibir qualquer variável de um primitive, enum, ou intrinsic tipo.Para variáveis de class tipo, o depurador corretamente exibe o valor com base no tipo mais derivado.Se você tiver um objeto leo do tipo lion, derivado do tipo cat, você pode avaliar leo.clawlength e obter o valor correto para um objeto do tipo lion.
Você pode atribuir um novo valor para qualquer expressão à esquerda hand lado que é um l-valor de um tipo primitivo.Atribuições para tipos de classe e de matriz não são suportadas.
Avaliação da função
O depurador oferece suporte a avaliação de funções, incluindo funções sobrecarregadas.Portanto, você pode inserir qualquer uma das expressões a seguir e o depurador chamará a versão correta da função sobrecarregada:
kanga ()
kanga (roo)
Na verdade, avaliar uma função no depurador chama e executa o código para essa função.Se a função possui efeitos colaterais, como alocar memória ou alterando o valor de uma variável global, avaliar a função em uma janela de depurador alterará o estado de seu programa, que pode produzir resultados inesperados.
Quando você definir um ponto de interrupção em uma função sobrecarregada, o local do ponto de interrupção depende como especificar a função.Se você especificar somente o nome da função, o depurador definirá um ponto de interrupção em cada sobrecarga com esse nome de função.Se você especificar a assinatura completa, o nome da função e a lista de argumentos completa, o depurador define um ponto de interrupção na sobrecarga especificada.
Operadores
O depurador corretamente avalia os operadores mais internos, incluindo:
Operadores relacionais: (expr1 >expr2, expr1 < expr2, expr1 <= expr2, expr1 => expr2, expr1 == expr2, expr1 != expr2).
Operadores booleanos: (expr1 & & expr2, expr1 || expr2).
Operador condicional: (expr1 ?expr2 : expr3) .
Operadores aritméticos: ( expr1 + expr2, expr1 - expr2,expr1 * expr2, expr1 / expr2, expr1 % expr2).
Operadores bit a bit: (expr1 & expr2, expr1 ^ expr2, expr1 | expr2, expr1 ~ expr2).
Operadores de deslocamento.Exemplos: (expr1 >>expr2, expr1 <<expr2, expr1 >>> expr2).
Assignment operators: ( lvalue = expr2, lvalue *= expr2, lvalue /= expr2, lvalue %= expr2, lvalue += expr2, lvalue -= expr2, lvalue <<= expr2, lvalue >>=expr2, lvalue &= expr2, lvalue ^= expr2, lvalue |= expr2 ).
Operadores unários.Examples: ( +expr1, - expr1, expr1++, ++expr1, expr1--, --expr1 ).
Você pode usar o operador vírgula para inserir uma série de expressões: expr1, expr2,expr3.
Operadores sobrecarregados
Mais operadores sobrecarregados funcionam no depurador.
Sobrecarga nos operadores fixos +, -, /, %, e & trabalho:
expr1 + expr2
expr1expr2
expr1 / expr2
expr1 % expr2
expr1 & expr2
Sobrecarga nos operadores fixos =, & &, &, | |, |, e ^ não funcionam:
expr1 = expr2
expr1 & & expr2
expr1 & expr2
expr1 | | expr2
expr1 | expr2
expr1 ^ expr2
Sobrecarregado operadores relacionais = =,! =, >, <>, =, e < = não funcionam para C++:
expr1 = = expr2
expr1 ! = expr2
expr1 > expr2
expr1 < expr2
expr1 > = expr2
expr1 < = expr2
Sobrecarga nos operadores fixos |, ^, <>,, >, <>, =, e < = não funcionam:
expr1 | expr2
expr1 ^ expr2
expr1 << expr2
expr1 >> expr2
expr1 > expr2
expr1 < expr2
expr1 > = expr2
expr1 < = expr2
Sobrecarregado operadores de prefixo +, -, + +, -,!, e ~ funcionam:
+expr1
-expr1
++expr1
--expr1
!expr1
~expr1
Sobrecarregado operadores de sufixo + + e --funcionam:
expr1+ +
expr1-
O operador de sobrecarga [] funciona:
- xexpr2
Matrizes multidimensionais
O avaliador de expressão C++ usa C#-estilo sintaxe de matrizes multidimensionais.Por exemplo:
c[0,0]
Usando a sintaxe C++ normal gera um erro:
c[0][0]Erro: índice '0' fora do limite para ponteiro/matriz 'c'
Cadeias de caracteres
O depurador reconhecerá o operador indexado quando ele é usado com seqüências, bem como matrizes.Assim, por exemplo, você pode inserir:
"hello world"[0]
O Watch janela exibirá o valor correto:
'h'
Projeções
Expressões de conversão simples funcionam no depurador:
(A)x
Casts que envolvem ponteiros não funcionará no depurador:
Conversões definidas pelo usuário não funcionam no depurador para Visual C++.
Atribuição e comparação de objeto
Comparação de objeto e a atribuição no depurador não funciona para Visual C++.
Operadores typeof e sizeof
O depurador oferece suporte o operador typeof e sizeof transformando em equivalente.Função do NET Framework.
typeof ( expression)
é transformada em:
System.Type.GetType(expression )
O depurador depois avalia a expressão transformada.
O depurador não oferece suporte a sizeof operador.
Boxing e Unboxing
O avaliador da expressão do depurador não suporta boxing e unboxing em Visual C++.Para obter mais informações, consulte Boxing e Unboxing.Se você tiver uma variável integer i que foi convertido em um objeto através de boxing, o depurador irá avaliar i como um inteiro, não como um objeto.Os resultados podem não ser a esperada.
Avaliação de propriedade
O depurador pode avaliar as propriedades em qualquer janela variável.No entanto, avaliar uma propriedade no depurador pode ter efeitos colaterais que produzem resultados inesperados e indesejados.Para proteger contra efeitos colaterais causados por avaliações acidentais, você pode desativar propriedade avaliação na Opções caixa de diálogo.
WebMethods
Você não é possível chamar WebMethods do depurador windows.