在 Visual Studio 中使用 OzCode 进行调试





0/5 (0投票)
为什么您应该使用 OzCode 在 Visual Studio 中调试您的 C# 代码。
引言
作为开发者,我们经常会忘记(有时甚至会畏惧)软件开发过程中的调试步骤,但当需要调试我们的软件时,我们通常会执行相同的手动步骤,不断地展开和检查各种信息,试图在脑海中描绘出问题出在哪里以及原因的完整图景。
OzCode,一款创新的 Visual Studio C# 调试扩展,彻底改变了我们调试 C# 代码的方式!OzCode 通过强大的可视化、智能对象检查、搜索和筛选集合等功能,增强了 Visual Studio 的调试体验,让您可以专注于相关数据。在本文中,我们将演示 OzCode 的一些功能。
入门:揭示、简化和搜索
安装 OzCode 后,当您在调试器下运行程序时,会注意到一些新的变化。一旦命中断点,将鼠标悬停在任何变量上,您就会看到 OzCode 增强的数据提示 (DataTip)
数据提示(或对象检查器)是您花费大部分时间检查值、寻找所需信息的地方。OzCode 的数据提示可以让您无需展开每一个对象即可获得大量关于对象的信息。在图 1 中,所有 30 个客户看起来都差不多,很难区分哪个是哪个。每个 Customer 对象可能包含许多属性,但我们可能只对其中的几个感兴趣。使用 OzCode 的 **Reveal**,我们可以只查找我们想要的属性,而不会浪费时间。
Reveal 允许我们只关注我们感兴趣的属性,例如 `ID` 和 `FullName`,只需点击属性名称旁边的 图标,这些“加星”的属性就会立即出现在该集合中相同类型的每个项上。
OzCode 还允许您在任何类型的对象中进行 **Search**(搜索),方法是使用数据提示底部的搜索文本框。结果会在找到时立即显示。
现在我们已经让对象看起来更清晰了,是时候弄清楚代码的其余部分是如何使用的,调用了哪些方法,以及从它们那里返回了什么值。我们可以通过 OzCode 强大的 **Simplify** 功能一目了然地获取所有这些信息。当单步执行语句时,OzCode 提供了一个可视化的表示,显示每个谓词的求值结果,以及任何内联和嵌套方法调用的返回值。
点击 图标将在语句的每个部分显示额外的信息,使我们能够看到整体结果,并允许我们深入了解单个步骤。
使用箭头(或按快捷键 Alt-K 或 Alt-J),我们可以深入到 if 语句的各个部分。在图 6 的示例中,如果我们向下按一次,我们将看到 `IsLotteryWinner` 方法返回 `true`(因此 `IsVIP` 甚至没有被执行),但是 `IsBudgetAvailable` 返回 `false`,因此整个语句的结果是 `false`。再向下深入一次将显示 `CalculateGiftCost` 的结果。
**Simplify** 使我们能够轻松地在事后弄清楚为什么会返回某些值,而无需使用临时变量或在 Watch 窗口中评估表达式。
可视化调试器
当您安装 OzCode 并调试程序时,您会注意到几个新的图标。大多数图标提供上下文操作,具体取决于您代码中发生的情况。其他图标则始终显示,让您可以轻松地执行与调试相关的操作。
**QuickActions**(快速操作)允许您对当前正在调试的代码执行各种操作。图 8 中的图像显示了一组可用于调试器当前步进行的行的上下文操作。可以通过鼠标点击或按 **Alt-Shift-D** 激活快速操作。
我们在图 8 中看到的第一个选项是 **Show all Instances**(显示所有实例)。此功能允许您查找当前加载在应用程序内存(托管堆)中的特定类型的所有实例。
在这里,我们可以看到当前内存中所有活动的实例。OzCode 会记住先前为特定类型定义的设置,例如 **Reveal**(揭示),并允许您在显示的项中进行 **Search**(搜索)。
Show all Instances(显示所有实例)也很有用,可以探索托管堆并可视化任何引用或装箱的值类型——通过指定其完全限定名称(在 IntelliSense 的帮助下)。在下面的图 10 中,正在显示我们进程的所有 System.String 实例。
此外,我们可以使用 Show all Instances(显示所有实例)通过点击属性旁边的 图标,来查找对象在所有实例中特定属性或字段的所有值。
最后,在类名级别点击 图标将允许您快速地在类型的所有成员中添加(或删除任何已有的)断点!
接下来,我们将看看如何在不更改一行代码或在代码中添加大量日志记录语句的情况下,获取关于正在执行的代码的丰富信息。
假设您有一个方法,它被多个线程调用,所以通过简单地设置断点并尝试单步执行代码来调试它并不是很方便——您会不断地在线程之间切换并丢失上下文。借助 OzCode 的 **Tracepoints**(追踪点),我们可以追踪对该方法的所有调用。点击方法名称旁边的 图标将允许您追踪每次进入该方法。选择后,将打开以下窗口。
您可以在 Expression(表达式)字段中指定任何自定义消息,以及指定任何局部变量或其他代码表达式的值。在底部的文本框中,您将看到该表达式的预览。
继续执行后,您将在 Visual Studio 的右下角看到一个新图标,表示有追踪消息可用。
您可以通过点击 View Messages(查看消息)来查看追踪消息,它们将在 OzCode 内置的追踪日志查看器中打开,允许您搜索、过滤和排序追踪消息以找到您所需的内容。
对于各种对象,还有许多其他上下文操作可用,通过 **Magic Wand**(魔法棒)功能,您可以执行额外的操作,例如在不离开数据提示的情况下 **设置条件断点**!
处理异常
偶尔我们也会遇到代码中的异常。OzCode 的 **Exceptions Trail**(异常追踪)使调查任何异常变得容易。当发生异常时,您可以使用“View exception details”(查看异常详细信息)快速操作来查看其详细信息。
这将打开以下窗口。
您可以在图 18 中看到,所有嵌套的内部异常都显示在一个漂亮的面包屑控件中,让您可以轻松地调查根本原因,还可以直接从 Exceptions Trail 窗口在 Google 或 StackOverflow 上搜索异常文本。底部显示选定异常的所有详细信息,并且 OzCode 的其他功能,如 Reveal 或 Search 均可用。最后,此窗口将继续显示异常详细信息,即使您停止调试后,也允许您导航调用堆栈,即使进程已终止。
比较和过滤
OzCode 使您能够轻松地从海量数据中找到“针”。假设我们有一个包含 30 个项目的集合,每个项目都是一个具有姓名和年龄的 Person 对象。现在,假设我们只想显示那些年龄低于 30 岁的人,所以我们可以 **Filter**(过滤)该集合。以下动画演示了如何执行此操作。
OzCode 的另一个很酷的功能是我们可以 **Compare**(比较)两个(或更多)不同的对象实例,并查看它们之间的差异。在下面的图 20 中,我们可以看到两个 PhoneBook 对象的实例,其中一个没有正确显示信息。我们可以在图中看到突出显示的差异。red:
获取 OzCode
OzCode 还有更多功能,可以轻松进行 C# 调试!我们强烈建议您查看所有 教学视频,并观看我们的 教学视频,了解如何开始。
您可以 免费试用 OzCode 30 天,它支持 Visual Studio 2010、2012、2013,并且即将支持即将推出的 Visual Studio 2015。
神奇的调试!