我计划在我的软件中添加广泛的诊断功能。现在我正在考虑如何做到这一点的总体策略,因为只是临时添加这样的代码会导致严重的混乱。
你有这方面的经验吗?
我想监控:
- 创建所选子集中的对象的密集程度。
- 调用密集选择的方法的程度。
- 选定时间段内的其他事件数。
- 对于选定的方法,收集有关调用者的信息(libcwd 允许这样做吗?)
- 每个线程在时间段序列中消耗的时间量。
我的软件是一个类似处理的工具,它通常像其他处理或计算工具一样工作,例如 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") {
// ...
}
}