使用IntelliTrace调试应用程序

用户如何修复他们的代码中的 Bug?您设置一些断点、在调试器下运行程序 、进行一点单步调试 – 并祈求能够轻而易举地发现问题,这样您就能继续处理 其他事情。

几乎自 ENIAC 发明以来,我们就一直在进行着同样方式的调试。这种繁琐而 耗时的调试方法为我们提供了很好的帮助,但是时候使调试更加轻松了。随着 Visual Studio 2010 Ultimate 的发布,新的 IntelliTrace 功能使开发人员能 够更深入地了解应用程序的执行情况,从而使调试进入了 21 世纪。

与其他监视和跟踪工具(例如 Windows Sysinternals 中的 Process Monitor)非常类似,Visual Studio 2010 在应用程序执行时收集有关应用程序 的数据,来帮助开发人员诊断错误。收集的数据称为 IntelliTrace 事件。这些 事件将在默认调试过程中收集,此外,它们使开发人员能够进行回溯以查看应用 程序中发生的情形,而不必重新启动调试器。

在本文中,我将向您介绍 IntelliTrace,并演示它如何在开发人员的日常开 发活动中体现出价值。我将演示 IntelliTrace 如何提供在应用程序执行过程中 所发生事件的时间线,以及开发人员如何能够使用这些事件来帮助调试。接着, 我将论述一些设置,开发人员可以更改这些设置来收集有关应用程序的一组更深 层的信息,从而获得完整的执行历史记录。最后,我将演示如何使用其他人(测 试人员)创建的以前记录的 IntelliTrace 文件来调试应用程序,而不必运行应 用程序来重现错误。

当 Visual Studio 诊断团队开始规划 Visual Studio 2010 时,我们花费了 很多时间与客户讨论,了解客户如何诊断其应用程序中的问题。尽管每个人都有 不同的方式和喜欢使用的工具集,但有一点是绝对清楚的:传统的应用程序问题 诊断方法困难、耗时而且成本高昂。开发人员收到的 Bug 报告几乎从没有任何 用于重现问题的步骤,并且大部分都是由像“我正在使用程序,突然间程序崩溃 了”这样的语句组成。即使在极个别的情况下提供了有效的重现步骤,也可能会 在特定的环境中出现 Bug,而这又会导致出现一组需要解决的全新问题。而且, Bug 通常是由于误解了框架或其他代码的运行方式而导致的。

考虑到这些难题,我们着手创建了一个新的调试器功能,用于在问题发生时 收集到正确的信息。我们的目标是为开发人员提供准确的重现步骤和系统环境设 置,以及公开他们所使用的框架和代码的行为,从而大幅提高可诊断性。随着 Visual Studio 2010 Ultimate 的发布,IntelliTrace 使开发人员能够更深入 地了解应用程序和框架行为,并能够打开由测试人员收集的 IntelliTrace 文件 来解决“无法重现”的情况,从而大大改善了调试体验。

IntelliTrace 简介

当开发人员需要更深入地了解代码执行情况时,IntelliTrace 提供了一种“ 加速调试”的方式来收集应用程序的完整执行历史记录。

为了阐释这一点,我将使用 Tailspin Toys 演示应用程序来演示 IntelliTrace 可收集的信息类型。首先,我将在 Visual Studio 中打开解决方 案并启动调试。当网站启动时,我将导航到“关于我们”页,并收到来自服务器 的错误。如何才能诊断问题?如果您像我一样,则您首先想到的是配置 web.config 文件以不显示自定义错误,然后重新启动调试器。但如果此问题是 间歇性的,又将如何呢?如果您可以在错误发生后就在此时进入进程,并从 Visual Studio 中获得应用程序中所发生情形的历史记录,是不是很好?

当您进行调试时,IntelliTrace 将在后台收集有关托管应用程序的数据,其 中包括来自许多框架组件(例如 ADO.NET、ASP.NET 和 System.XML)的信息。 这些 IntelliTrace 事件使开发人员能够查看先前在执行过程中发生的情况,并 且最重要的是,能够进行“回溯”以查看应用程序的先前状态,而不必重新启动 调试器。当我进入调试器时,我立即看到了按顺序列出的以前收集的 IntelliTrace 事件(请参见图 1)。


图 1 IntelliTrace 收集的诊断信息

正如您可从图 1 中看到的,IntelliTrace 事件的列表不仅仅局限于您在 Process Monitor 中看到的文件和注册表访问。我们为 Visual Studio 2010 定 义了将近 150 个 IntelliTrace 事件,并计划随着时间的推移用其他事件扩充 此列表。图 2 重点列出了一些 IntelliTrace 所收集事件的类别。

图 2 IntelliTrace 事件可跨 Microsoft .NET Framework 使用

类别 描述和收集的数据
ADO.NET 与针对 SQL 执行查询、执行的命令以及连接字符串相关的事件。
MVC 与 ASP.NET 管道以及请求处理和重定向相关的事件。
控制台 控制台输出。
数据绑定 Windows 窗体数据绑定。
环境变量 对进程中的环境变量进行求值和检索。
文件 创建、删除和访问文件。
手势 用户对 Web 窗体、Windows 窗体和 WPF 中的常见控件执行的操作。 除了收集有关与控件的交互的数据之外,单击其中一个事件还会自动将您重定向 到相应的事件处理程序。
迟缓初始化 初始化延迟加载的变量。
注册表 创建、删除和查询注册表信息。
服务模型 从 WCF 中进行的 Web 服务调用。
线程处理 用户工作项和并行计算任务的排队。
跟踪 调试器跟踪输出和断言。
用户提示 显示 Windows 窗体和 WPF 消息框以及对话框的结果。
工作流 实例化和完成活动。
XML XML 文件加载。
时间: 2024-10-31 05:31:12

使用IntelliTrace调试应用程序的相关文章

极光推送调试的程序报错

问题描述 极光推送调试的程序报错 极光推送调试的程序报错,不知道是什么原因,求解,谢谢 解决方案 定位到对应的源码行数分析 解决方案二: java.lang.ClassNotFoundException:java.lang.AutoCloseable 在加上异常是ClassNotFoundException 该类不存在 java.lang.AutoCloseable 这个类不存在

配置Editplus调试PHP程序入门教程

之前我介绍了PHP开发工具zend studio7入门使用教程,zend studio的使用其实蛮耗费内存的,针对PHP入门学习者,今天和大家分享如何配置Editplus来调试PHP程序,Editplus配置好后进行PHP网站开发其实并不比zend studio逊色,Editplus提供很多用户工具(插件),比如PHP自动完成.PHP函数自动提醒与补全等,这些都对配置Editplus调试PHP程序带来了方便,下面我就以PHP教程形式介绍Editplus的配置步骤.准备工作 在配置Editplus

利用C#线程窗口调试多线程程序

  从网上的资料判断,调试多线程程序似乎就一下3种方法. 1.在日志的某个地方写日志文件. 优点:不会干扰程序的执行,特别是对网络的多线程通信. 缺点:每次都需要打开日志文件以查看进程运行的信息. 2.利用断点进行调试. 优点:直观,可以直接看到运行过程的值 缺点:在多个线程设置断点,可能让程序跳来跳去,还需要额外地分出一部分精力用来理清程序的逻辑 3.利用弹出窗口来查看进程调试的信息. 优点;直观 缺点;在调试网路通信的时候,使得通信的过程产生延时,导致通信失败. 4.利用vs2010自带的线

在Windows 2003下面调试ASP程序的常见错误以及解决方案

window|程序|错误|解决 由于工作原因,笔者经常需要使用Asp开发一些小型程序,在Windows 2000下开发和使用相关程序时一般不会出现什么问题,并且也很容易解决.但是由于笔者为了尝鲜使用了Windows 2003 Server时,开发相关程序就出现了这样那样的问题,比如浏览器不能显示详细出错信息,连接Access时总是报错等,让笔者苦不堪言.在多次实践和查看了一些参考资料之后,对处理相关的问题有了一些经验,现在终于可以在Windows 2003 Server 下面调试和使用相关的程序

解决Eclipse无法调试J2ME程序的配置方法

用Eclipse无法调试J2ME程序,Eclipse配置方法如下: 菜单栏Window→Preferences→Java→Debug 去掉suspend execution on uncaught exceptions和Suspend execution on compilation errors前面两个勾勾,再把Debugger timeout(ms)设置为不少于15000ms 调试配置是通用的,只不过调试J2ME时会忘了.

用Xdebug调试PHP程序

什么是Xdebug? Xdebug是一个PHP的扩展用于调试PHP程序,用于调试PHP,可以提供很多有用的调试信息. 1.Xdebug的安装 首先假设我们的开发平台是windows XP上面已经安装好了Apache.PHP,PHP安装在C:\php目录. 先到Xdebug的官方网站http://xdebug.org/去下载对应你PHP版本的Xdebug的DLL文件,下载下来放在PHP的ext目录(C:\php5\ext),你可以按照其他扩展的命名方式,去掉后面Xdebug的版本编号直接改成php

使用pdb模块调试Python程序实例

  这篇文章主要介绍了使用pdb模块调试Python程序实例,本文着重讲解了pdb.run()函数.pdb.runeval()函数.pdb.runcall()函数.pdb.set_trace()函数的使用以及pdb调试命令等内容,需要的朋友可以参考下 在Python中,语法错误可以被Python解释器发现,但逻辑上错误或变量使用错误却不容易发现,如果结果没有符合预期,则需要调试,一个很好的调试工具:Python自带的pdb模块.pdb是Python自带的调试模块.使用pdb模块可以为脚本设置断点

调试Python程序代码的几种方法总结

  这篇文章主要介绍了调试Python程序代码的几种方法总结,文中代码基于Python2.x版本,需要的朋友可以参考下 程序能一次写完并正常运行的概率很小,基本不超过1%.总会有各种各样的bug需要修正.有的bug很简单,看看错误信息就知道,有的bug很复杂,我们需要知道出错时,哪些变量的值是正确的,哪些变量的值是错误的,因此,需要一整套调试程序的手段来修复bug. 第一种方法简单直接粗暴有效,就是用print把可能有问题的变量打印出来看看: ? 1 2 3 4 5 6 7 8 9 10 # e

利用director.ini调试应用程序

  本文介绍了如何使用directro.ini文件来调试PRoject程序或者shockwave movie.当我们在director编程环境里进行程序的调试的时候,我们可以看到脚本错误的类型,然而,当我们的程序运行在.exe或者shockwave movie的时候,我们看不到详细的错误提示信息,我们看到的只是象下面的一些提示:"script Error,continue?"等.这样的话就增加我们当错误发生的时候调试应用程序的的难度.director.ini文件可以帮忙解决这一个问题,