C++运行时调试(诊断策略和构造)

1 c++ debugging logging multithreading diagnostics

我打算在我的软件中添加广泛的诊断功能.现在我正在考虑如何做到这一点的总体策略,因为简单地添加这样的代码会导致严重的混乱.

你有这方面的经验吗?

我想要监控:

  1. 创建选定子集的对象的密集程度.
  2. 如何选择密集选择的方法.
  3. 选定时间段内的其他事件数.
  4. 对于选定的方法,收集有关调用者的信息(libcwd允许这样做?)
  5. 每个线程按时间段消耗的时间量.

我的软件是类似处理的工具,通常像其他处理或计算工具一样工作,例如lame 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") {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

Mag*_*off 5

我能想到的第一件事是你可以很好地利用一个单独的分析工具.这也将消除改变源代码以允许它的需要.

我可以推荐的工具:

这些工具可以轻松帮助您找到所有问题的答案.