5

C ++で作成したユーティリティを(Visual Studio 2008で)デバッグしています。大量の入力ファイルを低速のマシンと組み合わせると、プログラムの実行が不規則であるかどうかを監視する必要があるポイントに到達するまでに6時間以上かかる場合があります。

私はおそらくここでストローを把握していますが、必要な場所に到達するのにかかる時間をバイパスできるようにプログラムの実行状態を保存できるVisual Studioなどの機能やプラグインなどを知っている人はいますか?

4

2 に答える 2

5

Visual Studio 内でそのようなことを行う可能性についてはわかりませんが、何も見つからない場合は、仮想マシンを使用してマシンの状態を保存してみます。おそらく恐ろしく遅くなりますが、長期的には役立つかもしれません。幸運を

于 2011-05-24T15:18:15.167 に答える
-1

必要なのはconditional breakpoint... 詳細については、次の URL を参照してください。

http://msdn.microsoft.com/en-us/library/7sye83ce%28v=VS.90%29.aspx

ブレークポイントが有効になるための真の条件を知っており、それらの条件が真の場合、ブレークポイントがトリガーされ、実行が一時停止します。その後、午前中に来て、コードのステップ実行を開始できます。

ブレークを発生させたい正確なポイントがある場合は、プログラムによるブレーク ポイント DebugBreak() を配置すると、ブレーク ポイント例外がスローされますVisual Studio デバッガーはそれをキャッチし、その時点で実行を一時停止します。

gflagsまたは、プログラムの実行を有効にADPlusし、問題を引き起こしたと思われるコードの時点で、処理されない例外をスローします。プログラムがクラッシュすると、ADPlus はプロセス メモリの完全なクラッシュ ダンプを生成します。gflags を有効にしたということは0xCDCDCDCD、簡単にデバッグできるように (通常は) 周りに素敵な境界線でメモリが割り当てられることを意味します。

最後に、Microsoft のDbgHelp.dll ライブラリを使用して、さまざまなレベルの情報をプログラムでキャプチャできるミニ ダンプを生成することもできます (上記のソリューションで必要なクラッシュは発生しません)。必要な関数はMiniDumpWriteDumpです。パラメータを使用して、通常のミニ ダンプまたはフル メモリ ダンプを書き込むことができます。これは、可能であれば別のプロセスから実行する必要があります (独自のプロセスでハンドルを待機できます)。

于 2011-05-24T15:23:42.777 に答える