Pseudovariables en el depurador de Visual Studio
Las pseudovariables son términos que se utilizan para mostrar determinada información en una ventana de variables o el cuadro de diálogo Inspección rápida. Las pseudovariables se pueden especificar de la misma manera que las variables normales. No obstante, las pseudovariables no son variables ni corresponden a nombres de variable del programa.
Ejemplo
Suponga que está escribiendo una aplicación de código nativo y desea ver el número de identificadores asignados en la aplicación. En la ventana Inspección, puede escribir la siguiente pseudovariable en la columna Nombre y, a continuación, presionar Entrar para evaluarla:
$handles
En código nativo, puede utilizar las 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 fue 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 la aplicación. |
$vframe |
Muestra la dirección del marco de pila actual. |
$tid |
Muestra el identificador del subproceso actual. |
$env |
Muestra el bloque de entorno en el visor de cadenas. |
$cmdline |
Muestra la cadena de la línea de comandos que inició el programa. |
$pid |
Muestra el identificador del proceso. |
$ registernameo @ registername |
Muestra el contenido del registro registername. Normalmente, puede mostrar el contenido del registro con solo escribir su nombre. La única vez que necesita utilizar esta sintaxis es cuando el nombre del registro sobrecarga un nombre de variable. Si el nombre del registro es igual que un nombre de variable en el ámbito actual, el depurador lo interpreta como un nombre de variable. En ese caso $ registername o @ registername es muy práctico. |
$clk |
Muestra la hora en ciclos de reloj. |
$user |
Muestra una estructura con información de la cuenta que ejecuta la aplicación. Por razones de seguridad, no se muestra la información de contraseña. |
$exceptionstack |
Muestra el seguimiento de pila de excepción actual de Windows Runtime. $ exceptionstack solo funciona en aplicaciones para UWP. $ exceptionstack no se admite para excepciones de C++ y SEH. |
$returnvalue |
Muestra el valor devuelto de un método. |
En C#, puede utilizar las 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, al evaluar $exception se muestra un mensaje de error.Cuando el Asistente de 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 la cuenta que ejecuta la aplicación. Por razones de seguridad, no se muestra la información de contraseña. |
$returnvalue |
Muestra el valor devuelto de un método de .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 montón antiguo del usuario por el subproceso actual. User Old Heap = Large Object Heap + Pinned Object Heap (.NET 6+) |
En Visual Basic, puede utilizar las 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, al evaluar $exception se 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 objetos activos como elementos secundarios de la expresión especificada. La sintaxis es $objectid, expresión o $listobjectids, expresión. |
$ N # |
Muestra el objeto cuyo identificador es igual a N. |
$dynamic |
Muestra el nodo Vista dinámica especial para un objeto que implementa la interfaz IDynamicMetaObjectProvider . . La sintaxis es $dynamic, objeto. Esta característica solo se aplica a código que utiliza .NET Framework versión 4 o posterior. |