Compartilhar via


Pseudovariáveis no depurador do Visual Studio

Pseudovariáveis são termos usados para exibir determinadas informações em uma janela variável ou na caixa de diálogo QuickWatch . Você pode inserir um pseudovariável da mesma maneira que inseriria uma variável normal. No entanto, pseudovariáveis não são variáveis e não correspondem a nomes de variáveis em seu programa.

Example

Suponha que você esteja escrevendo um aplicativo de código nativo e queira ver o número de handles alocados no seu aplicativo. Na janela Inspeção , você pode inserir o seguinte pseudovariável na coluna Nome e pressionar Retornar para avaliá-la:

$handles

No código nativo, você pode usar os pseudovariáveis mostrados na tabela a seguir:

Pseudovariável Função
$err Exibe o último valor de erro definido com a função SetLastError. O valor exibido representa o que seria retornado pela função GetLastError.

Use $err,hr para ver a forma decodificada desse valor. Por exemplo, se o último erro foi 3, o $err,hr será exibido ERROR_PATH_NOT_FOUND : The system cannot find the path specified.
$handles Exibe o número de handles alocados em seu aplicativo.
$vframe Exibe o endereço do quadro de pilha atual.
$tid Exibe a ID do thread para o thread atual.
$env Exibe o bloco de ambiente no visualizador de cadeia de caracteres.
$cmdline Exibe a cadeia de caracteres de linha de comando que iniciou o programa.
$pid Exibe a ID do processo.
$ nome do registro

or

@ nome do registro
Exibe o conteúdo do nome do registro.

Normalmente, você pode exibir o conteúdo do registro apenas inserindo o nome do registro. A única vez que você precisa usar essa sintaxe é quando o nome do registro sobrecarrega um nome de variável. Se o nome do registro for o mesmo que um nome de variável no escopo atual, o depurador interpretará o nome como um nome de variável. É quando $o nome do registro ou @nome do registro é útil.
$clk Exibe a hora em ciclos de relógio.
$user Exibe uma estrutura com informações de conta para a conta que executa o aplicativo. Por motivos de segurança, as informações de senha não são exibidas.
$exceptionstack Exibe o rastreamento de pilha da exceção atual do Windows Runtime. $ exceptionstack funciona apenas em aplicativos UWP. $ exceptionstack não há suporte para exceções C++ e SEH
$returnvalue Exibe o valor retornado de um método.

No C#, você pode usar os pseudovariáveis mostrados na tabela a seguir:

Pseudovariável Função
$exception Exibe informações sobre a última exceção. Se nenhuma exceção tiver ocorrido, a avaliação $exception exibirá uma mensagem de erro.

Quando o Assistente de Exceção é desabilitado, $exception é adicionado automaticamente à janela Locais quando ocorre uma exceção.
$user Exibe uma estrutura com informações de conta para a conta que executa o aplicativo. Por motivos de segurança, as informações de senha não são exibidas.
$returnvalue Exibe o valor retornado de um método .NET.
$threadSmallObjectHeapBytes Exibe o número total de bytes alocados no heap de objetos pequenos pelo thread atual. (.NET 6+)
$threadUserOldHeapBytes Exibe o número total de bytes alocados no heap antigo do usuário pelo thread atual. User Old Heap = Large Object Heap + Pinned Object Heap (.NET 6+)

No Visual Basic, você pode usar os pseudovariáveis mostrados na tabela a seguir:

Pseudovariável Função
$exception Exibe informações sobre a última exceção. Se nenhuma exceção tiver ocorrido, a avaliação $exception exibirá uma mensagem de erro.
$delete ou $$delete Exclui uma variável implícita que foi criada na janela Imediata . A sintaxe é $delete,variável ou$delete,variável.
$objectids ou $listobjectids Exibe todas as IDs de Objeto ativas como filhos da expressão especificada. A sintaxe é $objectid,expressão ou$listobjectids,expressão.
$ N# Exibe objeto com ID de Objeto igual a N.
$dynamic Exibe o nó de Exibição Dinâmica especial para um objeto que implementa o IDynamicMetaObjectProvider. Interface. A sintaxe é $dynamic,objeto. Esse recurso se aplica somente ao código que usa o .NET Framework versão 4 ou posterior.