Pseudovariáveis no depurador do Visual Studio

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

Exemplo

Suponha que você está escrevendo um aplicativo de código nativo e quer consultar o número de identificadores alocados em seu aplicativo. Na janela Inspeção, você pode inserir a seguinte pseudovariável na coluna Nome e então pressionar Enter para avaliá-la:

$handles

No código nativo, você pode usar as pseudovariáveis mostradas na seguinte tabela:

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

Use $err,hr para ver o formulário decodificado deste valor. Por exemplo, se o erro mais recente fosse 3, $err,hr exibiria ERROR_PATH_NOT_FOUND : The system cannot find the path specified.
$handles Exibe o número de manipuladores 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.
$registername

ou

@registername
Exibe o conteúdo do registro registername.

Normalmente, você pode exibir conteúdo do registro simplesmente 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 igual ao nome da variável no escopo atual, o depurador interpretará o nome como um nome de variável. É nesse momento que $registername ou @registername é ú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 motivo de segurança, as informações de senha não são exibidas.
$exceptionstack Exibe o rastreamento de pilha da exceção atual de Windows Runtime. $ exceptionstack funciona apenas em aplicativos UWP. $ exceptionstack não é compatível com exceções de C++ e SEH.
$returnvalue Exibe o valor retornado de um método.

No C#, você pode usar as pseudovariáveis mostradas na seguinte tabela:

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 está desabilitado, $exception é automaticamente adicionado à janela Locais quando ocorre uma exceção.
$user Exibe uma estrutura com informações de conta para a conta que executa o aplicativo. Por motivo de segurança, as informações de senha não são exibidas.
$returnvalue Mostra o valor retornado de um método .NET.
$threadSmallObjectHeapBytes Exibe o número total de bytes alocados no heap de objeto pequeno 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 as pseudovariáveis mostradas na seguinte tabela:

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 criada na janela Imediato. A sintaxe é $delete,variável ou$delete,variável.
$objectids ou $listobjectids Exibe todas as IDs de objetos como filhos da expressão especificada. A sintaxe é $objectid,expressão ou$listobjectids,expressão.
$N# Exibe o objeto com a ID de objeto igual a N.
$dynamic Exibe o nó especial Modo de Exibição Dinâmico 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.