【问题标题】:why intelliTrace make my application so slow为什么 IntelliTrace 让我的应用程序如此缓慢
【发布时间】:2014-09-30 06:14:13
【问题描述】:

当我调试我的应用程序时,它需要读取一个大的原始图像文件(800MB)。当我打开 IntelliTrace 时,我发现应用程序很慢。

我发现 IntelliTrace 的 IO 太高,但我不知道如何找到真正的原因 '为什么 intelliTrace 让我的应用程序这么慢'。为什么 intelliTrace 会写入这么多信息.iTrace 文件,当我读取大的原始图像文件时。

请帮帮我,

【问题讨论】:

  • 您是否尝试过限制 IntelliTrace 存储的内容?

标签: c# visual-studio-debugging intellitrace


【解决方案1】:

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

来自Wikipedia

与传统的调试器不同,它只记录当前活动的 堆栈,IntelliTrace 记录所有事件,例如之前的函数调用, 方法参数、事件和异常。这允许代码 如果没有设置断点,执行将被倒回 发生错误。[114]使用 IntelliTrace 进行调试会导致 应用程序比没有它的调试运行得更慢,并且将使用 由于需要记录更多数据,因此需要更多内存。

为了让您在调试期间进行回溯,它会记录内存更改的方式和时间,以便在您退回代码时将其恢复到之前的状态(与只能前进的经典调试器相反)。

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

在 InteliTrace 中调试缓慢问题的答案是限制它保存的内容,甚至更好的是创建测试环境。您可以尝试制作单元测试和/或测试数据文件(比您当前的 blob 小得多)。

【讨论】:

  • 是的,你是对的。**乘以你改变它的次数——例如。循环长度** 是让 intelliTrace 记录太多信息到 .iTrace 文件中。所以当我调试我的应用程序时 IO 太高。
【解决方案2】:

IntelliTrace 不记录内存状态。它记录发生的事件。我所说的事件是指函数调用或异常。您可以配置要收集的事件(工具/选项/IntelliTrace/IntelliTraceEvent)以及要收集的数据量(“仅 IntelliTrace 事件”或“工具/选项/IntelliTrace”中的“IntelliTrace 事件和调用信息”)。收集数据不是免费的。而性能取决于要收集哪些事件、有多少数据以及在程序中生成了多少此类事件。因此,您可以在开始调试之前进行权衡。例如,如果您不关心文件访问事件,请将它们关闭。即使您的程序生成了许多此类事件,它们也不会被收集和存储。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-23
    • 1970-01-01
    相关资源
    最近更新 更多