您的位置:首页 > 其它

VS2010与.NET4系列 21.VS2010调试器改进(断点、数据提示、导入/导出)

2012-10-25 09:16 218 查看
今天介绍VS2010调试器带来的改进。

VS2010调试器具有很多的能力。像智能跟踪(也叫历史调试),新的并行/多线程调试能力,和倾卸调试支持,通常都会获得很大的关注。未来的几篇日志都会演示如何利用它们。

今天的日志,将会介绍一些小的却良好的调试器使用能力改进,非常有用。

断点标签

VS2010包含更好地管理调试器断点的支持。一个特别有用的特性叫做“断点标签”(Breakpoint Labels),它使得在项目内部或跨解决方案能够更好地分组和过滤断点。

之前版本的VS,不得不管理每一个调试器断点。单独管理每一个断点在大型项目中是痛苦,在想要维护那些要根据调试内容进行打开/关闭的断点的“逻辑分组”同样如此。使用VS2010的“断点标签”特性你现在可以对断点分组然后作为一个单元管理。

使用标签把多个断点一起分组

下面是VS2010内部断点的截图。它列出了所有在解决方案中定义的断点(在此处是ASP.NET MVC2 代码库):



上面列表中第一个和最后一个断点会在一个Controller实例被ASP.NET MVC 框架创建和释放时中断进入调试器。

使用VS2010,我现在可以选中这两个断点,右击,然后选择新的“编辑标签...”菜单命令并给定一个通用的标签/名称:



下面是选中“编辑标签”命令后弹出的对话框。我们可以使用它来为我们的断点创建一个新的字符串标签,或者选择已经定义好的现有标签。在本例中我们将创建一个叫做"Lifetime Management" 的新标签:



当我们点击“确定”按钮后,这两个选中的断点就会被分组到新建的"Lifetime Management" 标签:



按照标签过滤/排序断点

我们可以使用“查找”组合框根据标签快速地过滤/排序断点。下面我们只显示了使用 "Lifetime Management" 标签的断点:



按照标签打开/关闭断点

我们还可以通过标签分组切换断点的开/关。我们可以简单地通过标签分组进行过滤,用Ctrl-A全选断点,然后使用单击启用/禁用它们:



导入/导出断点

VS2010现在支持导入/导出断点到XML文件——这意味着你可以将其传递给其他开发人员、附加一个错误报告,或在以后重新加载。要导出断点的子集,可以通过特定的标签并点击“导出断点”按钮:



钉住数据提示

VS2010还包含一些“数据提示钉住”特性,从而使你能够更好地查看和跟踪调试器中的变量和表达式。

在调试器中把鼠标悬停在变量或表达式上,就会暴露它的数据提示(即显示其值的工具提示),然后点击上面新增的“钉住”按钮,就可以让数据提供始终可见:



你可以“钉住”任意数量的数据提示到屏幕上。除了钉住顶级的变量,你还可以深入到变量的子属性并钉住它们。

下面我“钉住”了3个变量:category, Request.RawUrl 和 Request.LogonUserIdentity.Name。注意其中最后两个变量是 Request 的子属性:



使用钉住的数据提示关联注释

悬停在钉住的数据提示上面会在调试器内部暴露一些额外的界面:



点击界面底部的注释按钮会展开数据提示——它允许你可选地添加注释:



这让追加和跟踪调试备注变得非常容易了:



钉住的数据提示在同时跨越调试会话和VS会话时非常有用

钉住的数据提示可用于跨多个调试器会话。这意味着如果你停止调试器,修改代码,然后重新编译并启动新的调试会话,任何钉住的数据提示会仍然在那里,连同任何你关联的注释。

从最近的调试会话查看值(非常棒的代码编辑器特性)

有多少次你曾经停止调试器只是为了回到代码并说:

“这个变量的值是什么???”

钉住的数据提示的一个良好的功能是它们会保持“最近一次调试会话的值”的跟踪,你可以在VB/C#代码编辑器内查看这些值,即使调试器不在运行

当你在代码编辑器而调试器又不运行的时候,数据提示默认会隐藏。不过在代码编辑器的左边缘,你会发现对之前你设置的每一个钉住的数据提示都有一个图钉:



把鼠标悬停在钉住的数据提示上,会导致它显示在屏幕上。下面你会看到当我悬停在编辑器中第一个图钉上时所发生的事情——它会显示调试会员最近一次的值:



这让保持状态和条件的跟踪变得更加容易,当你在代码编辑和调试模式之间切换的时候。

导入/导出钉住的数据提示

钉住的数据提示默认是跨VS会话保存的(不需要做任何事情来启用它)。

VS2010现在还支持导入/导出钉住的数据提示到XML文件,这样你就能够传给其他开发人员,附加到错误报告,或只是简单地在以后重新加载。



总结

VS2010包含许多新的调试器特性,重要而小巧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: