1

ソフトウェアに広範な診断機能を追加する予定です。現在、これを行う方法の全体的な戦略について考えています。そのようなコードをその場しのぎに追加すると、深刻な混乱が生じる可能性があるためです。

これについて何か経験はありますか?

監視したい:

  1. 選択したサブセットからオブジェクトがどの程度集中的に作成されるか。
  2. 集中的に選択されたメソッドが呼び出される方法。
  3. 選択した期間のその他のイベントの数。
  4. 選択したメソッドについて、呼び出し元に関する情報を収集します ( libcwd はこれを許可しますか? )
  5. 一連の期間で各スレッドが消費した時間。

私のソフトウェアは処理に似たツールで、一般的に他の処理ツールやコンピューティング ツールと同じように機能します。たとえば、ラメ mp3 エンコーダーなどです。これが、このような全体的な統計収集が私にとって理にかなっている理由です。

現在、作成/破壊を監視したいオブジェクトごとに基本クラスを追加することを計画しています。基本クラスは、コンストラクターとデストラクターに適切な情報を記録します。他に何ができますか??

class LifeCycleProbe {
    char * name;
    LifeCycleProbe(char * _name) : name(_name) {
       some::important::object.created(_name);
    }
    ~LifeCycleProbe() {
       some::important::object.destroyed(_name);
    }
}
class MonitorMe : private LifeCycleProbe {
    MonitorMe() : LifeCycleProbe("MonitorMe") {
        // ...
    }
}
4

4 に答える 4

5

私が最初に思いつくのは、別のプロファイリング ツールをうまく活用できるということです。これにより、ソースコードを変更して許可する必要もなくなります。

お勧めできるツール:

これらのツールは、すべての質問に対する答えを簡単に見つけるのに役立ちます。

于 2009-07-08T13:28:41.843 に答える
0

これは、ソースコードを変更せずに、優れたプロファイラーが収集できるように見えるものです。

私は kprof と valgrind を使用しています。これらのツールが役立つかもしれません。

于 2009-07-08T13:28:35.150 に答える