我打算在我的软件中添加广泛的诊断功能。现在我正在考虑如何做到这一点的总体策略,因为简单地添加这样的代码会导致严重的混乱。
你对此有什么经验吗?
我想要监控:
我的软件是类似处理的工具,通常像其他处理或计算工具一样工作,例如lame mp3 encoder。这就是为什么这样的整体统计数据收获对我有意义。
我目前正计划为每个要监视创建/破坏的对象添加基类。基类将在其构造函数和析构函数中记录正确的信息。 还能做些什么?
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") {
// ...
}
}
答案 0 :(得分:5)
我能想到的第一件事是你可以很好地利用一个单独的分析工具。这也可以消除改变源代码以允许它的需要。
我可以推荐的工具:
这些工具可以轻松帮助您找到所有问题的答案。
答案 1 :(得分:1)
+1表示外部探查器的人。 我只在开发或测试周期的非常激烈的情况下绑定分析代码,并且绝对不在生产代码库中。
当时,当我在C ++工作时,有一个非常棒的工具叫做BugTrapper。大约7年前,他们是一家创业公司,这是他们制作的令人印象深刻的软件。我认为他们从那时起已经成熟了很多,并且据我所知looking at their site就业。曾经是很酷的东西,虽然我不确定它现在是什么样的。无论如何,在重新发明轮子之前,值得尝试现成的解决方案。恕我直言。
答案 2 :(得分:0)
这看起来像是一个好的探查者应该能够为你收集的东西,而无需更改你的源代码。
我使用kprof和valgrind,也许这些工具可以帮助你。
答案 3 :(得分:0)
这听起来像是YAGNI的经典案例 - 我建议花时间去设计并正确编写软件。