2014-09-30 32 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」)。它不會自由地收集數據。性能取決於要收集的事件,數據量以及程序中生成的事件數量。因此,在開始調試之前,您可以進行權衡。例如,如果您不關心文件訪問事件,請將其關閉。即使你的程序產生了很多這樣的事件,它們也不會被收集和存儲。

相關問題