0

大きな raw イメージ ファイル (800 MB) を読み取る必要があるアプリケーションをデバッグすると、IntelliTrace を開くとアプリケーションが非常に遅いことがわかります。

IntelliTrace の IO が高すぎることがわかりましたが、 「なぜ intelliTrace がアプリケーションを非常に遅くするのか」という本当 の理由を見つける方法がわかりません生の画像ファイル。

助けてください、

IntelliTrace

4

2 に答える 2

0

InteliTrace は、アプリケーションが通過したすべてのステップを記録します。したがって、クレイジーな I/O です。

ウィキペディアから:

現在アクティブなスタックのみを記録する従来のデバッガーとは異なり、IntelliTrace は、以前の関数呼び出し、メソッド パラメーター、イベント、例外など、すべてのイベントを記録します。これにより、エラーが発生した場所にブレークポイントが設定されていない場合に、コードの実行を巻き戻すことができます。[114] IntelliTrace を使用してデバッグすると、それを使用しない場合よりもアプリケーションの実行が遅くなり、追加のデータを記録する必要があるため、より多くのメモリが使用されます。

デバッグ中にバックトラックできるようにするために、メモリがいつどのように変更されたかを記録し、コードをステップバックしたときに以前の状態に戻すことができます (ステップを進めることしかできない従来のデバッガとは対照的です)。

800MiB のデータを処理することで、IntelliTrace がメモリをどのように通過したかを、デコード中に使用するすべての変数 (変更した回数を掛けた値 - ループの長さなど) と一緒に記録することになります。

InteliTrace でのデバッグが遅い問題への答えは、保存するものを制限するか、テスト環境を作成することです。単体テストやテスト データ ファイル (現在のブロブよりもはるかに小さい) を作成してみることができます。

于 2014-09-30T06:33:04.860 に答える
0

IntelliTrace はメモリの状態を記録しません。発生したイベントを記録します。イベントとは、関数呼び出しまたは例外を意味します。収集するイベント ([ツール]、[オプション]、[IntelliTrace]、[IntelliTraceEvent]) および収集するデータの量 ([ツール]、[オプション]、[IntelliTrace] の [IntelliTrace イベントのみ] または [IntelliTrace イベントと呼び出し情報]) を構成できます。データを無料で収集することはできません。また、パフォーマンスは、収集するイベント、データの量、およびプログラムで生成されたそのようなイベントの数によって異なります。したがって、デバッグを開始する前にトレードオフを行うことができます。たとえば、ファイル アクセス イベントを気にしない場合は、それらをオフにします。プログラムがそのようなイベントを多数生成したとしても、それらは収集および保存されません。

于 2015-04-12T00:57:38.763 に答える