VS2010调试极慢,因为启动了IntelliTrace

如题,关闭此功能后按F5调试,程序运行速度恢复正常。


 

引用一篇介绍此功能的文章供参考

http://www.cnblogs.com/shanyou/archive/2010/05/09/1730956.html

Visual Studio 2010 Ultimate 版本有个新功能IntelliTrace(智能跟踪),IntelliTrace被引入到Visula Studio中来加速我们对.NET应用程序的调试,它通过对预先设置的事件和方法在运行过程中的跟踪并将其有效地传递给调试执行者,从而快速的传递程序在执行过程中的状态和各种信息来帮助开发者更好的调试程序,快速的发现问题。实际上,在Visual Studio 2010之前,Microsoft Visual Stuido已经帮助我们很好的继承了调试工具,比如对变量的监控,对堆栈的查看等等,并且允许设置断点进行单步调试等。所有的这些都在很好的帮助开发者来了解程序在不同的执行过程中的状态以及检测是否按照预先实际的逻辑进行运转,而且更多的,我们通过断点后监测程序状态来发现问题所在。而这样所存在的问题是,一些逻辑上的错误可能发生在断点执行之前,而且很可能是一些无法追查。开发者必须停止当前的调试,重新设置断点并启动调试,而这样的试验过程往往需要很多次才能找到正确的位置来设置断点。IntelliTrace智能的将一些调试信息和程序状态自动的跟踪并实施的展现给开发人员,从而减少了需要程序员找到适当的断点才能跟踪和监控程序运行状态的过程。 

Visual Studio提供给我们两个方式来控制其搜集信息的内容源,一个是IntelliTrace events only,仅仅收集智能跟踪事件和调试中断的相关数据;另外一个是IntelliTrace events and call information,这个就会收集除了IntelliTrace事件之外对一个方法调用的进入和退出的各种数据。下边我们来看看在Visual Studio 2010中如何设置IntelliTrace的跟踪选项。

进入到工具 --> 选项 --> IntelliTrace。它在默认状态下是启用的,但是,仅捕捉事件,因为捕捉事件是便宜的。然而,当你开始跟踪所有这些调用信息时,真正的价值开始显现出来了。你每一次调试的时候,IntelliTrace都将弹出来,你在动态调试的时候可以使用这个历史性的调试工具。假如我在那里并且有一个断点,但是,我要备份和重新设计这个断点,我可以使用IntelliTrace完成这个任务。

使用IntelliTrace捕捉到调试进程的其他人可以把记录以及.dlls和pdbs文件发送给你,你可以重放它们的进程。这个进程也许进入到数据库(你没有这个数据库),它也许是采用你不能复制的方法设置的,它可能在你不能企及的网络上,但是,你不用担心,因为你拥有记录以及.dlls和pdbs文件,你可以重放。

当然,拥有源代码会更好,因为那样你就能够看到这个代码好像是在你自己的机器上调试它一样。这对于在你的机器上运行正常,在其他人的机器不能运行的那些神秘的故障来说是非常好的。它对于多线程的情况也是非常好的,当你经过这个应用程序的时候,这个软件瑕疵就消失了,但是,在正常速度运行时,这个软件瑕疵又出现了。

image

默认情况下,IntelliTrace仅仅收集IntelliTrace相关的事件,这样是为了保持所收集的数据较少,并且对于性能上的影响是最小的。而当你选择对方法调用的数据也进行搜集时,除了其临时搜集的数据所占用空间的增大外,对于性能的影响也是较大的。尽管收集到的细节有所不同,但两种方式都会收集一些共同的数据。比如,它总会在第一次启动收集过程时收集系统信息,模块的加载和卸载事件,线程的起始和结束时间等。随着模块和线程的事件,可以正确的更新模块和线程调试窗口的信息。另外,任何模式下,在调试断点处也会对数据进行收集,并将所收集到的基本数据类型和对象在调试其中进行检查和审阅,并允许改变其值。

总的说来IntelliTrace调试程序就是为程序开发者量身定制的,通过其独特的“历史调试”功能,为开发者提供了一个反悔追溯过程控制功能。比如,在开发中程序在10分钟前出现一个异常,怎么办呢,如果在以前一般是通过手动调用Debug.Write语句,现在不必了!因为不少开发工具中的这种历史调试功能都非常相似,在VS2010 正式版 中通过IntelliTrace,不但能使程序员看到程序的当前状况,也可以检查某些情况下产生的事件,甚至还能隔离应用程序历史记录中的故障点。所以,启用历史调试之后,VS2010 正式版能够捕获调用堆栈以及相关变量,咱们就可以“回退”至程序的保存前10分钟或者更长时间,检查程序发生异常、故障时的各种情况。因为,在默认情况下程序只保存关键的类型,而开发人员可以选择记录所有的参数,对象以及全局变量。所以,IntelliTrace会主动展示程序运行过程中的关键事件,诸如代码异常、文件访问、时时调试等等。 

更好的理解使用IntelliTrace调试功能,向你推荐MSDN杂志上上的一篇文章IntelliTrace: 使用 IntelliTrace 调试应用程序,Justin Marks 演示了如何使用 Visual Studio 2010 旗舰版中提供的 IntelliTrace 功能,该功能为开发人员提供了一种强大的新调试工具来加速调试并收集应用程序的完整执行历史记录、获得更深入的信息以及快速查找 Bug。 

 

 

*************************************************************************

VS2010中使用IntelliTrace来进行调试

【51CTO独家特稿】除了IntelliTrace之外,Visual Studio 2010的各种新功能都没有什么亮点。IntelliTrace给调试提供了一种新方法。在Visual Studio 2010中,这是最重要的改进,它可以在两方面发挥作用:一方面它可以帮助开发人员更快地进行调试;另一方面,它还可以帮助测试人员记录下Bug,然后把这些Bug发送给开发人员,帮助开发人员定位到具体的代码行。下面我们来详细介绍这个功能的各种优点。

提高生产力

它可以让开发人员和测试人员保持良好的关系,并且,它还可以通过减少找出并修复Bug的时间来提高他们的生产力。在测试的时候,测试人员可以记录下他们的步骤,然后把它发送给开发人员。使用Intellitrace,开发者可以定位到具体的代码行,然后修复这个Bug。测试人员无须重复进行那些已经测试过的步骤,他们可以运行已经记录下来的测试,然后从他们发现这个问题的那个步骤开始,继续进行测试。它的确可以提高生产力。

历史回溯

我们可以很容易地回溯某个Bug的历史,这可以帮助开发人员更快地修复这个Bug。在过去,你必须要重新启动整个应用程序才可以,但是现在,已经没有这个必要了。你只需点击IntelliTrace中的链接就可以了,它可以自动地定位到发生异常的代码行。在IntelliTrace窗口中,可以找到所有的断点事件。

断点事件

不可重现的错误

对于开发人员来说,这是一个很令人头痛的问题,因为在大多数情况下,开发人员都无法重现在测试机器上发生的异常。针对这个问题,IntelliTrace提供了一个很好的解决方案,它可以帮助开发人员(以及测试人员)尽快地交付整个产品或项目。虽然关于发生的异常,以前的调试器也可以提供一点信息,但是IntelliTrace可以提供更完整的信息,并且,我们可以无数次地进行回溯,来重现这个问题,这样的话,我们可以很容易地修复这个问题。

概括起来,IntelliTrace提供了这三种功能:

记录

回溯

重现

IntelliTrace的这些功能可以加快编码和调试的速度。

原文标题:Debugging With IntelliTrace - Visual Studio 2010

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值