伪变量是用于在变量窗口或 快速监视 对话框中显示某些信息的术语。 可以采用与输入普通变量相同的方式输入伪变量。 但是,伪变量不是变量,并且与程序中的变量名称不对应。
Example
假设你正在编写本地代码应用程序,并希望查看你应用程序中被分配的句柄数。 在 “监视 ”窗口中,可以在 “名称” 列中输入以下伪变量,然后按 Return 计算它:
$handles
在本机代码中,可以使用下表中显示的伪变量:
| 伪变量 | 功能 |
|---|---|
$err |
显示使用函数 SetLastError 设置的最后一个错误值。 显示的值表示 GetLastError 函数将返回的内容。 用于 $err,hr 查看此值的解码形式。 例如,如果最后一个错误为 3,那么$err,hr会显示为ERROR_PATH_NOT_FOUND : The system cannot find the path specified. |
$handles |
显示应用程序中分配的句柄数。 |
$vframe |
显示当前堆栈帧的地址。 |
$tid |
显示当前线程的线程 ID。 |
$env |
在字符串查看器中显示环境块。 |
$cmdline |
显示启动程序的命令行字符串。 |
$pid |
显示进程 ID。 |
$
registername或 @
registername |
显示寄存器 registername 的内容。 通常,只需输入注册名称即可显示注册内容。 唯一需要使用此语法的情况是当寄存器名称覆盖变量名称时。 如果寄存器名称与当前作用域中的变量名称相同,调试器会将名称解释为变量名称。 这时 $寄存器名 或 @寄存器名 就派上用场。 |
$clk |
以时钟周期为单位显示时间。 |
$user |
显示一个结构,其中包含运行应用程序的帐户的帐户信息。 出于安全原因,不会显示密码信息。 |
$exceptionstack |
显示当前 Windows 运行时异常的堆栈跟踪。
$ exceptionstack 仅适用于 UWP 应用。
$ exceptionstack 不支持 C++ 和 SEH 异常 |
$returnvalue |
显示方法的返回值。 |
在 C# 中,可以使用下表所示的伪变量:
| 伪变量 | 功能 |
|---|---|
$exception |
显示有关最后一个异常的信息。 如果未发生异常,则 $exception 评估会显示一条错误消息。禁用异常助手时,当发生异常时, $exception 会自动添加到 “局部变量 ”窗口。 |
$user |
显示一个结构,其中包含运行应用程序的帐户的帐户信息。 出于安全原因,不会显示密码信息。 |
$returnvalue |
显示 .NET 方法的返回值。 |
$threadSmallObjectHeapBytes |
显示当前线程在小型对象堆中分配的字节总数。 (.NET 6+) |
$threadUserOldHeapBytes |
显示当前线程在用户旧堆中分配的字节总数。
User Old Heap = Large Object Heap + Pinned Object Heap (.NET 6+) |
在 Visual Basic 中,可以使用下表中显示的伪变量:
| 伪变量 | 功能 |
|---|---|
$exception |
显示有关最后一个异常的信息。 如果未发生异常,则 $exception 评估会显示一条错误消息。 |
$delete 或 $$delete |
删除在 “即时 ”窗口中创建的隐式变量。 语法为 $delete,变量 或$delete,变量. |
$objectids 或 $listobjectids |
将所有活跃对象标识符显示为指定表达式的子级。 语法为 $objectid,表达式 或$listobjectids,表达式. |
$
N# |
显示对象 ID 等于 N 的对象。 |
$dynamic |
显示实现此对象的特殊IDynamicMetaObjectProvider节点。 接口。 语法为 $dynamic,对象。 此功能仅适用于使用 .NET Framework 版本 4 或更高版本的代码。 |