Visual Studio .NET调试器的"隐藏秘密"?
尽管我通常不喜欢SO上的讨论/主观帖子,但我真的很欣赏人们整理的"隐藏的秘密"帖子。它们概述了一些我们可能现在会发现的通常遗漏的工具。
对于这个问题,我想探索Visual Studio .NET调试器。我们经常使用或者最近发现并希望我们早就知道的VS.NET调试器中的"隐藏秘密"是什么?
解决方案
监视窗口中的$ exception将显示当前正在处理的异常,即使我们没有将Exception实例分配给命名变量的捕获也是如此。
一些有用的快捷键。
- F11进入一种方法。
- Shift-F11退出一种方法。
- 按" F10"键跳过某个方法。
条件断点。
作为一个大多数时候都使用与前端代码相同的解决方案中的Web服务的Web开发人员,我发现将"添加"到流程的功能可以节省大量时间。
在找到这个隐藏的宝石之前,我总是必须在一些调用Web服务方法的前端代码上设置一个断点,然后逐步进入它。现在,我了解了这个技巧/功能,我可以轻松地在代码的任何部分上设置断点,从而节省了时间和精力。
这有点旧了。如果添加监视表达式" err,hr",则它将保存GetLastError()的结果,格式为HRESULT(仅限VC ++调试器)。
我最喜欢的功能之一是断点上的" When Hit ..."选项。我们可以打印带有变量值的消息以及许多其他信息,例如:
- $ ADDRESS-当前指令
- $ CALLER-先前的功能名称
- $ CALLSTACK-调用堆栈
- $ FUNCTION-当前函数名称
- $ PID-进程ID
- $ PNAME-进程名称
- $ TID-线程ID
- $ TNAME-线程名
我们也可以让它运行宏,但我从未使用过该功能。
我们可以将windbg扩展加载到Visual Studio调试器中,并从立即窗口使用它们。
对于.net应用程序," System.Diagnostics"具有许多有用的调试功能。例如,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也有很多不错的属性。我使用的两个是用于更改本地窗口中详细信息的调试器显示属性,以及用于跳过我们不需要调试的代码的逐步属性:
// 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 } }
如另一篇文章中所述,Sara Ford在VS调试器上进行了最新的系列文章。
她的博客是VS技巧的最佳来源:http://blogs.msdn.com/saraford/archive/tags/Visual+Studio+2008+Tip+of+the+Day/default.aspx
- 线程窗口,从调试-> Windows->线程。我们可以冻结和解冻线程,并切换活动线程。当调试或者复制多线程应用程序的问题时,这真棒。
- 我们可以将黄色的"下一个语句"箭头拖放到另一个位置。当程序恢复时,它将在该语句处恢复执行。我们可以将其添加到工具栏,一个名为Set Next Statement的蓝色箭头,但默认情况下不存在。
- 我们可以"撤消"我们所做的导航,例如滚动,转到另一个文件或者跳至参考。快捷键是ctrl-(减号)。这样,我们可以跳入一个函数,在其中检查代码,然后返回到原来的位置而无需查看。
我们可以在"监视"窗口中右键单击一个对象,然后单击"创建对象ID"。
它将为该实例分配一个ID号,使我们可以在复杂的对象图中查看哪些对象引用了同一实例。
我经常使用的东西:
- 单击菜单项"调试|异常"(或者Ctrl-D,简称E),可以在引发任何异常时启用中断,或者选择不中断某些异常。
- 我们可以设置调试器,以从MS服务器下载一些框架源代码和符号,然后逐步进入框架代码。 (某些库,例如System.ServiceModel,尚不可用)。它在"调试"下的"选项"窗口中。请参阅《 MSDN操作方法》。
- 我们可以使用VS.NET调试器来调试IE中运行的Javascript。我们只需要安装IE javascript调试器,然后在IE的设置中启用javascript调试即可。然后,在出现JS错误时,将弹出"我们要调试"对话框,我们可以选择在VS.NET中进行调试。