Visual Studio .NETdebugging器的“隐藏的秘密”?
尽pipe我一般不喜欢SO的讨论/主观post,但我真的明白了人们放在一起的“隐藏的秘密”。 他们提供了一些您可能会发现的常见工具的概述。
对于这个问题,我想探索Visual Studio .NETdebugging器。 什么是VS.NETdebugging器中的一些“隐藏的秘密”,你经常或最近发现,希望你早就知道?
我最喜欢的function之一是在断点上可用的“当…命中…”选项。 您可以使用variables的值以及许多其他信息打印消息,例如:
-
$ADDRESS
– 当前指令 -
$CALLER
– 上一个函数名称 -
$CALLSTACK
– 调用堆栈 -
$FUNCTION
– 当前函数名称 -
$PID
– 进程ID -
$PNAME
– 进程名称 -
$TID
– 线程标识 -
$TNAME
– 线程名称
你也可以让它运行一个macros,但我从来没有使用过这个function。
您可以在“监视”窗口中右键单击某个对象,然后单击“创build对象ID”。
它将为该实例分配一个ID号,允许您在复杂的对象图中查看哪些对象引用了相同的实例。
对于.net应用程序System.Diagnostics
有很多有用的debugging工具。 Debugger
类例如:
Debugger.Break(); // Programmatically set a break point Debugger.Launch(); // Launch the debugger if not already attached Debugger.IsAttached // Check if the debugger is attached
System.Diagnostics
也有很多好的属性。 我使用的两个是debugging器显示属性,用于更改放置在本地窗口中的详细信息以及用于跳过不关心debugging的代码的跳过属性:
// Displays the value of Property1 for any "MyClass" instance in the debugger [DebuggerDisplay("{Property1}")] public class MyClass { public string Property1 { get; set; } [DebuggerStepThrough] public void DontStepInto() { // An action we don't want to debug } }
作为一名Web服务开发人员,他们大多数时间和我的前端代码处于相同的解决scheme中,我发现“附加”到一个进程是一个巨大的节省时间的能力。
在我发现这个隐藏的gem之前,我总是必须在一些调用web服务方法的前端代码上设置一个断点,然后进入它。 现在,我知道这个技巧/function,我可以很容易地在我的代码的任何部分设置断点,这为我节省了大量的时间和精力。
监视窗口中的$exception
将显示当前正在处理的exception,即使您没有将Exception
实例分配给指定variables的catch也是如此。
- 线程窗口,从debugging – > Windows – >线程。 您可以冻结和解冻线程,并切换活动的线程。 使用multithreading应用程序debugging或复制问题时,这非常棒。
- 您可以将黄色的“下一个陈述”箭头拖放到另一个地方。 当程序恢复时,它将在该语句中恢复执行。 您可以将其添加到工具栏,一个名为Set Next Statement的蓝色箭头,但默认情况下不存在。
- 您可以“撤消”您所做的导航,如滚动,转到其他文件或跳转到引用。 快捷键是ctrl–(控制减号)。这样,你可以跳进一个函数,在那里检查代码,然后回到你没有看的地方。
条件断点 。
您可以将windbg扩展加载到Visual Studiodebugging器中,并在即时窗口中使用它们。
正如另一篇文章中所发布的,Sara Ford正在做一个关于VSdebugging器的最新系列。
她的博客是VS技巧的最佳来源: http : //blogs.msdn.com/saraford/archive/tags/Visual+Studio+2008+Tip+of+the+Day/default.aspx
这是一个旧的。 如果添加监视expression式err,hr
,那么这将保存GetLastError()的结果,格式化为HRESULT(仅限VC ++debugging器)。
执行暂停时,您可以上下拖动当前行光标(黄色箭头)。
此外,为了在exception暂停期间启用此function,您必须先点击“启用编辑”。
你也可以通过在下面debugging感兴趣的对象来使VS处理exception:Debug-> Exceptions:Thrown column
一些有用的快捷键。
-
F11
进入一个方法。 -
Shift-F11
退出方法。 -
F10
来切换一个方法。
我经常使用的东西:
-
单击菜单项“Debug | Exceptions”(或简称Ctrl-D,E),可以在引发exception时启用中断,或者在某些exception情况下select不中断。
-
您可以设置debugging器从MS服务器下载一些框架源代码和符号,并进入框架代码。 (一些库,如System.ServiceModel,尚不可用)。 它在“debugging”下的“选项”窗口中。 请参阅MSDN如何 。
-
您可以使用VS.NETdebugging器来debugging运行在IE中的Javascript。 你只需要安装IE javascriptdebugging器,并在IE的设置中启用javascriptdebugging。 然后在一个JS错误,它会popup一个“你想debugging”对话框,你可以select在VS.NETdebugging。
如果文件属于另一个解决scheme(外部文件),则可以打开并在源文件中放置断点。 debugging器仍然可以达到断点。 无需打开另一个Visual Studio实例来debugging外部文件。 有助于debugging您收到的Web服务。 只要所有的数据源都是最新的和编译的,这个工作就行。