Visual Studio 2010智能追踪带来的困惑
我的操作系统是WIN 7旗舰版,.NET开发环境是Visual Studio 2010,数据库是SQL Server 2008。 最近一段时间发现自己的C盘的空间不够用了,出现了红色的警示。特别最近几天C盘的剩余空间逼近0 KB。
最近项目比较紧张,不敢重装系统,逼于无奈,只好卸载一些软件。俺的C盘大小是50G,不算大,也不算小了。最近两天,我是反复的去卸载一些软件,每次都能腾出十几M的空间。令人费解的是不到一会儿又提示C盘空间不足。由于有忙,也没多在意,故又去删一些其他的软件,打算过了这阵子,在重装系统。
下午又提示磁盘不足,我发现该删的软件都删除了,有些不改删除的也删掉了。只好痛下心把office删掉,这个应该可以腾出几百M的空间出来用吧。于是我删掉了office。谁知道下午4时左右,令人崩溃的事情发生了。Visual Studio无法调试,提示C盘的空间不足。NND,气死我了。
难道是中病毒了?不会呀。用360检查了一次,没有中毒迹象。用360清理垃圾的功能,每次只能查出几百K的垃圾文件。一个下午能产生几百M的垃圾文件,这也太假了吧。
没办法,只好腾出时间来检查一下。第一次没有查出任何问题。
第二次检查了C盘的Program Files和Windows两个文件夹的大小,发现加起来不到20G。偶的神呀,还有30G的空间去哪里了? 想到了隐藏文件,故把隐藏文件显示出来。发现C盘下面有个ProgramData。竟然有33G,有图为证:
仔细排查了ProgramData中的文件,终于找到了祸根:C:\ProgramData\Microsoft Visual Studio\10.0\TraceDebugging。
里面是些什么文件呢,看一下:
一共有1593个文件,最大的文件有32.6 MB,最小的有128 KB 。
用记事本打开其中一个较小的文件,如下图,发现一些看不懂的字符。看了许久,发现一个规律。在字符块中存在一个隔开的空白,看下图:
字符块:
空白块:
找到了原因就到网上搜索了一下这个是个什么文件夹,有如此之大。
找到了下面两篇:
Visual Studio 2010- IntelliTrace(智能跟踪)[优化c盘]
推荐Visual Studio 2010新功能-IntelliTrace(智能跟踪)
原来是智能跟踪惹的祸。
删除这些文件,我的C盘恢复平静,也无需重新安装系统了。
总结:
Visual Studio 2010你虽贵为IDE中的王者,但你一天却也能占据我几百M的空间。在我删除那些文件之前,我看了一下这些文件中最初的日期是2010年的3月8号,初略计算了一下,至今,除去周六、周日,不到100天,你占据了我30多G的空间。平均每天占用我三百多M的空间。
这个链接设置的解决方案:Visual Studio 2010- IntelliTrace(智能跟踪)[优化c盘]。
如果你觉得你的C盘空间不够用,首先就把C:\ProgramData\Microsoft Visual Studio\10.0\TraceDebugging下面的文件全部删除吧。
什么是智能追踪?
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文件,你可以重放。
当然,拥有源代码会更好,因为那样你就能够看到这个代码好像是在你自己的机器上调试它一样。这对于在你的机器上运行正常,在其他人的机器不能运行的那些神秘的故障来说是非常好的。它对于多线程的情况也是非常好的,当你经过这个应用程序的时候,这个软件瑕疵就消失了,但是,在正常速度运行时,这个软件瑕疵又出现了。
默认情况下,IntelliTrace仅仅收集IntelliTrace相关的事件,这样是为了保持所收集的数据较少,并且对于性能上的影响是最小的。而当你选择对方法调用的数据也进行搜集时,除了其临时搜集的数据所占用空间的增大外,对于性能的影响也是较大的。尽管收集到的细节有所不同,但两种方式都会收集一些共同的数据。比如,它总会在第一次启动收集过程时收集系统信息,模块的加载和卸载事件,线程的起始和结束时间等。随着模块和线程的事件,可以正确的更新模块和线程调试窗口的信息。另外,任何模式下,在调试断点处也会对数据进行收集,并将所收集到的基本数据类型和对象在调试其中进行检查和审阅,并允许改变其值。
总的说来IntelliTrace调试程序就是为程序开发者量身定制的,通过其独特的“历史调试”功能,为开发者提供了一个反悔追溯过程控制功能。比如,在开发中程序在10分钟前出现一个异常,怎么办呢,如果在以前一般是通过手动调用Debug.Write语句,现在不必了!因为不少开发工具中的这种历史调试功能都非常相似,在VS2010 正式版 中通过IntelliTrace,不但能使程序员看到程序的当前状况,也可以检查某些情况下产生的事件,甚至还能隔离应用程序历史记录中的故障点。所以,启用历史调试之后,VS2010 正式版能够捕获调用堆栈以及相关变量,咱们就可以“回退”至程序的保存前10分钟或者更长时间,检查程序发生异常、故障时的各种情况。因为,在默认情况下程序只保存关键的类型,而开发人员可以选择记录所有的参数,对象以及全局变量。所以,IntelliTrace会主动展示程序运行过程中的关键事件,诸如代码异常、文件访问、时时调试等等。
更好的理解使用IntelliTrace调试功能,向你推荐MSDN杂志上上的一篇文章IntelliTrace: 使用 IntelliTrace 调试应用程序,Justin Marks 演示了如何使用 Visual Studio 2010 旗舰版中提供的 IntelliTrace 功能,该功能为开发人员提供了一种强大的新调试工具来加速调试并收集应用程序的完整执行历史记录、获得更深入的信息以及快速查找 Bug。
本文链接:http://www.cnblogs.com/atree/archive/2010/08/24/Visual-Studio-2010-IntelliTrace.html
转自:cnblogs,51cto