2010-12-28 8 views
0

HI、は、すべて2秒

後にログを生成し、私は新しいのを追跡し、オペレータを削除して、同じのログを生成するために使用されるC++でライブラリを開発しました。今度は、新しくログを生成し、2秒後に削除するもう1つの機能を追加しなければなりません。また、2秒後にログファイルが更新されます。メインプログラムがコアダンプを取得した場合には、メモ割り当てを追跡するためのいくつかのログを持つこともできます。どんな助けもありがたいです。

thanxです。

+0

グローバルスタティックタイマーを設定して、グローバルスタティック関数内で2秒の経過をチェックし、その後ログのみを実行します。 – DumbCoder

答えて

0

最後のダンプのタイムスタンプをディスクに書き込むだけで、2秒以上前にバッファを再度ダンプしてタイムスタンプをリセットすると、しかし、クラッシュが発生してもこのログをデバッグするには、その2秒で重要な情報を失う可能性があると想定します。デバッグモードで実行すると2秒の遅延なしに新しい/削除を書き込むことができます。

0

コンピュータプログラムの場合、2秒間が長すぎるため、メインプログラムがクラッシュした場合にログに記録されない多くの割り当て/割り当て解除が発生する可能性があります。

より良い代替方法は、すべての割り当てと割り当て解除に関する情報を一部の永続ストレージ(たとえばファイル)に記録することです。これにより膨大な量のデータがログに記録される可能性があるため、潜在的なメモリ関連の問題をデバッグする場合にのみ機能を有効/有効にする必要がありますが、コアダンプが多くの情報を失うことはありませんあなたがバッファリングされたIOを使用しているならば、ほとんどの1つのバッファ価値があります)、あなたは潜在的な問題を特定するために、または明らかに正しい割り当て/割り当て解除のペアの大部分をフィルタリングするために、

0

valgrindのようなメモリアクセスの正確性を検証するためのツールがあります。あなたはまだそれらを見ましたか?もしそうでなければ、毎回の割り当てごとにこの種のロギングを行う予定があるならば、すでに書かれたツールがそうするように、プログラムの速度を落とすでしょう。もっと精度の高いものが必要な場合は、自分で作成するのが良い考えです。