.NET中的Visual Studio观察窗口中有哪些特殊变量?

时间:2010-03-04 19:59:50

标签: visual-studio debugging

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

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

(注意:这个问题是关于.NET,而不是C ++。)

5 个答案:

答案 0 :(得分:9)

Visual Studio for .NET调试中支持Pseudovariables

  • $ exception :显示有关上一个异常的信息。如果没有发生异常,则评估$exception会显示错误消息。仅在Visual C#中,当禁用异常助手时,发生异常时会自动将$exception添加到本地窗口。
  • $ user :显示包含运行应用程序的帐户的帐户信息的结构。出于安全原因,不会显示密码信息。

以下仅适用于Visual Basic:

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

答案 1 :(得分:8)

如果右键单击Watch窗口中的任何变量,则可以创建对象ID 。这会给你一个数字,例如第一个对象ID为1#。

对象ID 表示特定实例。然后可以在Watch窗口中观察实例,就像常规变量一样,但即使本地引用超出范围,您也可以继续观察实例。当它最终被垃圾收集时,您将无法访问它。

答案 2 :(得分:2)

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

答案 3 :(得分:2)

$ user伪变量是唯一记录的其他变量。在VS2010中,VB.NET调试器获取some new ones

答案 4 :(得分:2)

@ERR ;上一个错误值,与GetLastError()API函数返回的值相同

@TIB ;当前线程的线程信息块

@CLK ;未记录的时钟寄存器;仅可在Watch窗口中使用

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

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

@ ST0,@ ST1,@ ST2,@ ST3,@ ST4,@ ST5,@ ST6,@ ST7 ;英特尔CPU浮点寄存器