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. |
$ registernameor @ 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, variable or$delete, variable. |
$objectids ou $listobjectids |
Exibe todas as IDs de objetos como filhos da expressão especificada. A sintaxe é $objectid, expression or$listobjectids, expression. |
$ 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, object. Esse recurso se aplica somente ao código que usa o .NET Framework versão 4 ou posterior. |