在.NET的Visual Studio监视窗口中有哪些特殊变量可用?

在.NET的Visual Studio监视窗口中有哪些特殊变量可用?,.net,visual-studio,debugging,.net,Visual Studio,Debugging,我昨天刚刚在.NET的VS.NET监视窗口中了解到$exception。这显示了当前已抛出的异常,这大大节省了时间,不需要找到小感叹号图标并将鼠标悬停在上面 观察窗口中还有哪些特殊变量? (注:此问题是.NET,而不是C++)< p>如果右键单击监视窗口中的任何变量,可以创建对象ID。这将给您一个数字,例如第一个对象ID将是1μy。 对象ID表示特定实例。然后,可以像常规变量一样在监视窗口中监视该实例,但即使本地引用超出范围,也可以继续监视该实例。当它最终被回收时,您将无法访问它 使用“@err

我昨天刚刚在.NET的VS.NET监视窗口中了解到$exception。这显示了当前已抛出的异常,这大大节省了时间,不需要找到小感叹号图标并将鼠标悬停在上面

观察窗口中还有哪些特殊变量?


(注:此问题是.NET,而不是C++)

< p>如果右键单击监视窗口中的任何变量,可以创建对象ID。这将给您一个数字,例如第一个对象ID将是1μy。
对象ID表示特定实例。然后,可以像常规变量一样在监视窗口中监视该实例,但即使本地引用超出范围,也可以继续监视该实例。当它最终被回收时,您将无法访问它

使用“@err”将显示GetLastError()的值,“@err,hr”将显示错误消息。

另一个记录在案的伪变量是$user。在VS2010中,VB.NET调试器获取。

@ERR ;Last error值,与GetLastError()API函数返回的值相同

@蒂布 ;当前线程的线程信息块

@时钟 ;未记录时钟寄存器;只能在手表窗口中使用

@EAX、@EBX、@ECX、@EDX、@ESI、@EDI、@EIP、@ESP、@EBP、@EFL ;英特尔CPU寄存器

@CS、@DS、@ES、@SS、@FS、@GS ;英特尔CPU段寄存器

@ST0、@ST1、@ST2、@ST3、@ST4、@ST5、@ST6、@ST7 ;Visual Studio为.NET调试支持的英特尔CPU浮点寄存器:

  • $exception:显示上次异常的信息。如果未发生异常,则计算
    $exception
    将显示错误消息。仅在Visual C#中,当禁用异常助手时,
    $Exception
    会在异常发生时自动添加到局部变量窗口
  • $user:显示一个结构,其中包含运行应用程序的帐户的帐户信息。出于安全原因,不显示密码信息
以下内容仅适用于Visual Basic:

  • $delete$$delete:删除在立即窗口中创建的隐式变量。语法是
    $delete,
    变量或
    $$delete,
    变量
  • $ObjectId$ListObjectId:将所有活动对象ID显示为指定表达式的子对象。语法是
    $objectid,
    表达式或
    $listObjectId,
    表达式
  • $N#:显示对象ID等于N的对象
  • $dynamic:为实现
    IDynamicMetaObjectProvider
    的对象显示特殊的动态视图节点。接口。语法是
    $dynamic,
    对象。此功能仅适用于使用.NET Framework版本4的代码。看

这是来自C++的Lead(与@ Eax、@ CLK等),但我希望从.NET世界中获得更多。VB支持的$动态也通过“动态”在C.*中工作。不过,我不确定剩下的是什么。我在那篇MSDN文章中看到了其他东西。它支持自动动态查看_ComObject。太棒了。