【发布时间】:2010-11-09 01:02:40
【问题描述】:
我计划在我的软件中添加广泛的诊断功能。现在我正在考虑如何做到这一点的总体策略,因为临时添加这样的代码可能会导致严重的混乱。
你有这方面的经验吗?
我要监控:
- 从选定子集中创建对象的密集程度。
- 调用密集选择的方法的程度。
- 选定时间段内的其他事件数。
- 对于选定的方法,收集有关调用者的信息 (libcwd allows this?)
- 每个线程按时间段顺序消耗的时间量。
我的软件是一个类似处理的工具,它通常像其他处理或计算工具一样工作,例如 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") {
// ...
}
}
【问题讨论】:
标签: c++ multithreading debugging logging diagnostics