2014-09-30 57 views
0

当我调试我的应用程序时,需要读取一个大的原始图像文件(800MB)。我发现应用程序打开IntelliTrace时太慢了。为什么intelliTrace让我的应用程序太慢

我发现的IntelliTrace的IO太高,但我不知道如何找到真正的原因“为什么的IntelliTrace使我的应用程序这么慢”。为什么在智能跟踪写那么多信息给.iTrace文件,当我读大的原始图像文件。

请给我一个帮助,

IntelliTrace

+0

您是否试过限制IntelliTrace存储的内容? – 2014-09-30 06:29:47

回答

0

InteliTrace记录所有步骤的应用经历。因此疯狂的I/O。

Wikipedia

不同于传统的调试器,即只记录当前活动 栈,的IntelliTrace记录所有的事件,如之前的函数调用, 方法参数,事件和异常。这允许代码 在发生错误时没有设置断点的情况下被重新执行。使用IntelliTrace进行调试将导致 应用程序比没有它的调试运行速度更慢,并且会使用更多的内存作为需要记录的附加数据。

为了让您能够调试它记录如何以及在原路返回时,内存被更改,以便它可以将其恢复到以前的状态,当你退后一步代码(相对于经典的调试器,你只能向前一步) 。

通过处理800MiB的数据,您几乎可以强制IntelliTrace记录它如何通过内存,以及您在解码过程中使用的所有变量(乘以您更改的次数 - 例如循环长度)。

InteliTrace中缓慢调试问题的答案限制了它保存甚至更好的创建测试环境的方式。您可以尝试进行单元测试和/或测试数据文件(远远小于您当前的blob)。

+0

是的,你是对的。**乘以你改变的时间 - 例如。循环长度**会使intelliTrace记录更多的信息给.iTrace文件。因此,当我调试我的应用程序时,IO的值太高。 – huoxudong125 2014-09-30 06:49:50

0

IntelliTrace不记录内存状态。它记录发生的事件。事件是指函数调用或异常。您可以配置要收集哪些事件(工具/选项/ IntelliTrace/IntelliTraceEvent)以及要收集的数据量(工具/选项/ IntelliTrace中的“IntelliTrace Events Only”或“IntelliTrace Events and Calls Information”)。它不会自由地收集数据。性能取决于要收集的事件,数据量以及程序中生成的事件数量。因此,在开始调试之前,您可以进行权衡。例如,如果您不关心文件访问事件,请将其关闭。即使你的程序产生了很多这样的事件,它们也不会被收集和存储。

相关问题