软件库

强大的VisualStudio神级调试器——OzCode 4.0.1632破解版

OzCode是Visual Studio开发软件的扩展插件工具,用户使用它可以减少了调试时间并通过检测和隔离错误,可以大大的提高工作的生产效率。OzCode允许搜索性能,比较对象,计算表达式并建立跟踪点 - 都导致了快速的和富有成效的调试会话。

LINQ调试

LINQ太棒了。它允许我们编写功能强大,简洁且富有表现力的代码,这些代码很容易阅读和维护。唯一的问题是使用LINQ意味着牺牲代码的可调试性以实现可读性。如果你使用LINQ的代码行F10 - 你刚刚执行了一大堆复杂的逻辑,但是你完全没有了解实际发生的事情。在调试LINQ时,使用断点和手动步进可能是徒劳的浪费时间。

OzCode突破性的LINQ调试可视化允许您查看不同项目如何通过LINQ管道传递,并查看每个lambda表达式的返回值,同时利用强大的OzCode工具,如Reveal和Search。

数字指示器
在调试期间,当执行点(黄线)到达LINQ查询时,每个LINQ运算符旁边会出现一个指示符,表示它生成了多少项。

这些指标一目了然地显示每个操作员消耗了多少项目,以及生成了多少项目,帮助您决定关注哪个操作员。

LINQ DataTip

单击其中一个数字指示器将OzCode置于LINQ调试模式,并打开LINQ DataTip窗口,该窗口显示给定操作员生成的项目。您可以按DataTip中的“之前/之后”按钮,快速切换生成的项目和该操作员使用的项目。

单击其中一个项目将更新平视显示以反映每个lambda返回的内容,因为该特定项目通过LINQ管道传递。另一种选择是将鼠标滚轮悬停在数字注释上以快速滚动项目,看到它们的值在调试代码中立即发生变化。

LINQ分析窗口

可以从DataTip窗口打开详细的分析工具窗口,也可以单击调试查询左侧的lambda图标:

您可以使用Search and Reveal查找感兴趣的对象,使用运算符breadcrumbs在LINQ管道之间导航,并利用动画可视化LINQ查询的流程:

了解LINQ查询中的异常

要解决的最难的问题之一是在复杂的LINQ查询中从深处抛出异常 - 这几乎是不可能调试的。通过突出显示红色的LINQ数字指示器,OzCode会在它被抛出之前警告您这样的异常,让您使用LINQ DataTip或LINQ分析窗口向下钻取以找出导致该异常的确切项目!

LINQ中的例外情况

流畅和查询语法支持
使用LINQ查询,过滤和转换集合时,开发人员可以选择两种类型 - 基于lambda的流畅API或类似SQL的查询表达式。

选择使用哪种语法取决于个人偏好以及问题的性质。流畅的语法更简洁,并且在查询简单时往往更可取。但是,使用查询语法可以更容易地表达一些更复杂的查询,这允许您利用’let’关键字和多个from子句来处理复杂的数据。

OzCode完全支持LINQ的两种风格。当您使用查询语法时,OzCode将直观地突出显示哪个项来自哪个from子句,let每个项的表达式计算的值是什么,等等!

导出允许您将对象实例的文本表示保存到文件或剪贴板,以便在调试会话结束后使用。

开放出口

使用Export,开发人员可以“抓取”对象并将其保存为JSON,XML或甚至作为C#代码,可用于使用上次调试运行的值创建单元测试。
序列化选项

保存导出的实例(或将其复制到剪贴板)后,可以使用它来重现实例状态,使用外部差异工具进行分析或比较。

对于JSON输出,OzCode使用行业标准的Newtonsoft Json.NET序列化程序,这使得反序列化和处理结果非常容易。

平视显示器

调查
调试复杂表达式绝非易事。你如何看待方法调用返回的内容?在一个冗长的复杂if语句中,每个布尔条件的值是什么?如果不简化代码或添加变量来存储单个结果,则难以回答这些问题。借助OzCode强大的“简化”可视化功能,您可以立即弄清楚代码中发生了什么!单步执行表达式时,红色/绿色编码将分别告诉您哪些表达式返回false / true。红色或绿色表示整个表达式的结果。只需单击“简化”按钮,表达式即时可视化,您可以选择向下钻取并查看单个表达式结果。

魔术

Magic Glance可以通过单击工具栏图标(或按+ + 快捷键)切换,通过向您显示您执行的每行代码的摘要,可以让您对代码有深入的了解。

预测未来

OzCode v2.0执行代码执行的预测分析(或者我们喜欢称之为:算命!)。在下面的switch语句中,OzCode预测未来:当我们点击F10时,你可以看到箭头指向我们要去的地方,并且不相关的代码路径是半透明的。

实时编码
Predict通过为您在调试时所做的更改提供即时反馈,为术语“实时编码”带来了新的含义,使您能够非常快速地修复愚蠢的小编码错误。

如果您正在使用VS2015,Predict甚至可以预测更复杂的表达式,例如LINQ查询:

断点
条件断点

条件断点可以使调试更有效率,但没有OzCode,使用它们就像是一件苦差事。OzCode使添加条件断点非常容易!只需单击一下,OzCode就会根据特定的属性值设置条件断点,并为您预填充谓词。想要在断点处添加更多谓词吗?走捷径吧!只需将鼠标悬停在相关变量上,然后单击“添加条件”按钮。

当Set … Break 演练

要弄清楚的最棘手的错误是那些涉及变异状态的错误。如果在程序执行期间的某个时刻,某些对象的状态变得无效,你怎么办?但是你不确切知道它在何时何地以这种方式出现?在检查调试器中的值时,当您发现有问题的属性值时,使用魔术棒并选择“何时设置 - >中断”。下一次更改属性值时,OzCode将进入调试器并允许您检查程序的状态,并确切地确定该问题值的确切位置!这些Setter Breakpoints适用于常规属性和自动属性,您甚至可以在没有源代码的属性上添加Setter Breakpoint!

例外

如果没有OzCode,调查异常是一项沉闷的任务 - 浏览内部异常的踪迹,滚动冗长的callstack,并斜视异常的相关数据以尝试理解错误。使用OzCode,可以在方便的工具窗口中显示有关异常的所有相关信息。您可以使用超级方便的痕迹控制来浏览每个内部异常,甚至可以直接在Visual Studio中启动Google或stackoverflow搜索!

预测例外情况

OzCode的Predict会提醒你一个即将发生的异常。但这并非全部 - 例如,如果OzCode检测到即将发生的NullReferenceException,您将看到一个红色突出显示确切的表达式将导致异常OzCode的预测异常分析使得在它发生之前修复异常非常容易,具有强大的编辑和继续功能!

跟踪

当您调试一个棘手的问题时,特别是在调试遗留代码或大量多线程场景时,单步执行代码来弄清楚系统正在做什么感觉就像试图同时处理12个球一样。使用OzCode,当事情变得毛茸茸时,您可以在程序执行期间在关键点轻松添加动态日志记录,然后使用OzCode烘焙到Visual Studio中的全功能集成日志查看器查看输出。您不再需要停止调试,添加日志记录代码,然后在每次添加简单跟踪时重建!

只需对要跟踪的值使用“创建跟踪点”命令即可。Tracepoint就像一个断点,除了它不会破坏程序的执行,它会写一条跟踪消息。

然后,使用“添加到跟踪点”按钮添加您认为可能与错误相关的任何信息:

最后,观察跟踪消息进入Tracepoints Viewer:

快速附加

在许多项目中,只需点击F5就无法启动调试会话。相反,您必须使用“附加到进程”选项,在长进程列表中找到正确的进程,最后连接到它。稍后,当您重新启动调试会话时,您必须重新执行此操作。然后再次。然后再次。

通过QuickAttach,OzCode可以实现超快速连接到流程的程序。QuickAttach窗口显示最近附加的进程列表。通过单击“固定”按钮,可以将快捷键附加到该进程:

就是这样。从现在开始,每当我们想要附加到’w3wp.exe’时,我们只需点击+ + ,那就是它

如果要附加到的进程不在“最近附加”列表中,您可以随时搜索它,甚至可以查看其UI的预览:OzCode通过向您显示您正在附加的网站,使附加到IIS应用程序池非常容易:

搜索

调试对象和集合时,通常会查找特定属性或字段,或者属性或字段中保存的值。不幸的是,这通常涉及大量点击和滚动,或编写自定义调试特定代码。即使在简单的结构中查找项目也不容易,更不用说在复杂的对象图中这样做了。通过我们的“搜索”功能,情况不再如此。无论对象的大小或对象图的复杂程度如何,都可以快速轻松地搜索成员名称和值!

预测

在调试会话期间单步执行foreach循环时,您可能会遇到一些常见问题,例如确定循环中的位置以及导航到集合中的特定项目。虽然Visual Studio确实提供了回答这些问题的方法,但它们并非易事。借助OzCode创新的“Foresee”功能,处理foreach循环非常简单直观。Foresee是一个调试可视化工具,可以帮助您随时跟踪循环中的位置,并允许导航到集合中的特定项目。它为您提供了集合的可视化表示,包括已经迭代的项目,当前项目和即将到来的项目。对集合中的特定项目感兴趣?只需右键单击该项目并选择“运行到项目”,循环将执行,然后中断所需的项目。

由于Visual Studio的限制,Foresee功能目前仅在Visual Studio 2013中受支持

相比

如果要比较文件,可以使用diff应用程序来发现差异。不幸的是,当你需要比较两个(或更多)物体时,你必须相信你的眼睛和记忆。使用我们的比较功能,您现在可以花更少的时间眯眼,让OzCode只需点击即可比较对象和集合!结果以并排视图显示,可帮助您调查两个对象之间的差异和相似之处。

一旦选择了一个对象进行比较,OzCode将突出显示与所选实例相当的所有其他局部变量和字段(意味着它们是相同类型或派生自相同类型)。

比较两个实例

比较集合中的项目
如果您需要发现同一个集合中两个或更多项目之间的差异怎么办?OzCode的Compare可以简单快速地比较多个项目。比较同一集合中的几个项目很容易,结果会并排显示。

使用外部差异工具

比较两个长字符串 - 例如两个XML或Json文档时,Compare会自动启动您喜欢的Diff工具,这样可以非常容易地发现两者之间的差异。

比较文字 您可以在OzCode-> Options下配置Compare以使用Visual Studio的本机diff工具或外部diff工具。
目前支持的选项包括Beyond Compare(v3或v4),KDiff,WinMerge,Araxis Merge和Tortoise。

比较快照

最难解决的问题是那些涉及神秘副作用的问题。考虑一个长而复杂的方法,它接受一个对象并对其执行各种突变。你能说出实际改变了什么吗?
对于一个有很多成员的班级,这些成员本身也可能包含一些成员,因此很难找到差异。使用Compare,您现在可以保存对象的状态,然后在调试期间将对象与其原始保存状态进行比较。执行该功能后,您可以选择“ 比较快照”选项以查看差异。

与快照比较

保存给定对象的快照时,它现在将在调试会话中保持不变!您可以保存对象的快照,停止调试会话甚至关闭Visual Studio,然后在第二天返回并将实时对象与您保存的快照进行比较!

对象可以有许多属性,但在调试时,并非所有属性都对您有用。您通常只对少数人感兴趣。对于Customer类,它可能是ID和Username属性,对于3D空间中的Point,它可能是X,Y和Z字段。通过我们的“显示”功能,您最终可以专注于实际重要的数据。为您感兴趣的属性添加星标,它们将出现在对象旁边。例如,如果您有一组Customer对象,并且您主要关注它们的名字和姓氏,只需将FirstName和Surname属性加注星标,并立即将集合中的所有对象显示在它们旁边的这些属性。您的选择将在调试会话和不同的Visual Studio解决方案文件中保留。

自定义表达式

调试时,有时您需要的信息不包含在对象的字段和属性中; 相反,它是基于您的对象的计算或表达式。您可能会发现自己希望仅针对此特定调试会话拥有一组不同的属性。

例如,当您在游戏中查看Player对象时,您可能希望看到距离最近的敌人的距离,而无需将此属性添加到其界面。

使用我们的自定义表达式功能,您可以在任何对象类型上创建多个自定义表达式,这些表达式将像该类型的任何其他成员一样显示。你甚至可以为你最感兴趣的人加注星标。

例如,如果Customer类在其属性中有工资历史记录,但是为了修复错误,您真正需要看到的是客户在特定年份的到期税,只需使用客户的“添加自定义表达式”选项即可变量,并写下您想要看到的表达式。表达式将显示为Customer类的属性,包含表达式的值。

过滤集合

在代码中过滤集合相对容易,并且有很多方法可以做到这一点。但是如何在调试时过滤?例如,您有一组Customer对象,并且您希望过滤超过35年的对象。Visual Studio的即时窗口和监视窗口不支持lambdas。使用我们的过滤器集合功能,您可以将过滤器表达式应用于任何集合。要解决客户问题,请选择客户集合并将其过滤器设置为:DateTime.Today.Year - [obj] .Birthday.Year> 35,按Enter键并立即查看结果。过滤集合后,所有其他功能也可用于过滤结果。

快捷操作

OzCode的快速操作为您提供最相关的操作,具体取决于您当前的上下文。想要为类中的每个方法添加断点吗?跟踪特定方法的每个条目?快速前进到特定的代码行?按Alt + Shift + D打开“快速操作”菜单或单击魔术棒,做一些魔术!

显示所有实例

OzCode使得在内存中找到您想要探索的特定对象变得微不足道。只需打开“显示所有类型实例”,您就可以看到当前在内存中的该类型的每个对象。为什么那个对象仍在记忆中?是否有任何包含此值的对象?OzCode令人兴奋的新探索工具毫不费力地立即回答了这些问题以及更多问题。

更多详细介绍:https://www.oz-code.com/main#/features

OzCode练习项目:https://github.com/oz-code/OzCodeDemo

下载地址

退出移动版