Compartir a través de


Pseudovariables en el depurador de Visual Studio

Los pseudovariables son términos que se usan para mostrar cierta información en una ventana variable o en el cuadro de diálogo Inspección rápida . Puede escribir una pseudovariable de la misma manera que escribiría una variable normal. Sin embargo, los pseudovariables no son variables y no se corresponden con nombres de variable en el programa.

Example

Supongamos que está escribiendo una aplicación de código nativo y desea ver el número de identificadores asignados en su aplicación. En la ventana Inspección , puede escribir lo siguiente pseudovariable en la columna Nombre y, a continuación, presionar Volver para evaluarlo:

$handles

En el código nativo, puede usar los pseudovariables que se muestran en la tabla siguiente:

Pseudovariable Función
$err Muestra el último valor de error establecido con la función SetLastError. El valor que se muestra representa lo que devolvería la función GetLastError.

Use $err,hr para ver el formato descodificado de este valor. Por ejemplo, si el último error era 3, $err,hr mostraría ERROR_PATH_NOT_FOUND : The system cannot find the path specified.
$handles Muestra el número de identificadores asignados en su aplicación.
$vframe Muestra la dirección del marco de pila actual.
$tid Muestra el identificador del subproceso para el subproceso actual.
$env Muestra el bloque de entorno en el visor de cadenas.
$cmdline Muestra la cadena de línea de comandos que inició el programa.
$pid Muestra el identificador de proceso.
$ registername

o

@ registername
Muestra el contenido del registro registername.

Normalmente, puede mostrar el contenido del registro simplemente escribiendo el nombre del registro. La única vez que necesita usar esta sintaxis es cuando el nombre de registro sobrecarga un nombre de variable. Si el nombre del registro es el mismo que un nombre de variable en el ámbito actual, el depurador interpreta el nombre como un nombre de variable. Esto es cuando $registername o @registername resulta útil.
$clk Muestra la hora en ciclos de reloj.
$user Muestra una estructura con información de cuenta para la cuenta que ejecuta la aplicación. Por motivos de seguridad, no se muestra la información de contraseña.
$exceptionstack Muestra la traza de la pila de la excepción actual de Windows Runtime. $ exceptionstack solo funciona en aplicaciones para UWP. $ exceptionstack no es compatible con las excepciones de C++ y SEH
$returnvalue Muestra el valor devuelto de un método.

En C# puede usar los pseudovariables que se muestran en la tabla siguiente:

Pseudovariable Función
$exception Muestra información sobre la última excepción. Si no se ha producido ninguna excepción, la evaluación $exception muestra un mensaje de error.

Cuando el Asistente para excepciones está deshabilitado, $exception se agrega automáticamente a la ventana Variables locales cuando se produce una excepción.
$user Muestra una estructura con información de cuenta para la cuenta que ejecuta la aplicación. Por motivos de seguridad, no se muestra la información de contraseña.
$returnvalue Muestra el valor devuelto de un método .NET.
$threadSmallObjectHeapBytes Muestra el número total de bytes asignados en el montón de objetos pequeños por el subproceso actual. (.NET 6+)
$threadUserOldHeapBytes Muestra el número total de bytes asignados en el heap de memoria antigua del usuario por el subproceso actual. User Old Heap = Large Object Heap + Pinned Object Heap (.NET 6+)

En Visual Basic, puede usar los pseudovariables que se muestran en la tabla siguiente:

Pseudovariable Función
$exception Muestra información sobre la última excepción. Si no se ha producido ninguna excepción, la evaluación $exception muestra un mensaje de error.
$delete o $$delete Elimina una variable implícita que se creó en la ventana Inmediato . La sintaxis es $delete,variable o$delete,variable..
$objectids o $listobjectids Muestra todos los identificadores de objeto activos como elementos secundarios de la expresión especificada. La sintaxis es $objectid,expression o$listobjectids,expression.
$ N# Muestra el objeto con el id. de objeto igual a N.
$dynamic Muestra el nodo especial Dynamic View de un objeto que implementa el IDynamicMetaObjectProvider. Interfaz. La sintaxis es $dynamic,object. Esta característica solo se aplica al código que usa .NET Framework versión 4 o posterior.