比较C ++程序应该相同的运行的配置文件以检测分歧

时间:2012-09-13 13:59:20

标签: c++ debugging profiling valgrind gprof

我有一个C ++二进制文件(GNU LilyPond)偶尔为同一输入生成不同的输出。对二进制文件进行valgrinding无助于跟踪此模糊发生的位置,也无法读取gprof数据。非常有用的是一个分析工具,它比较同一输入上同一程序的多次运行,并识别参数的分歧和函数的返回值(甚至可能调用函数的次数和/或调用哪些函数)什么时候)。多个程序运行之间的一种智能“差异”文件。调试数据太大而无法手动发现,因此某些类型的合成工具将非常有用。有没有人知道可以完成这类任务的工具?

1 个答案:

答案 0 :(得分:0)

我所知道的最接近的事情是类似代码覆盖的工具,但我最近没有使用过一个来提出建议。

然而,我们可能会做一些猜测。最可能的候选者是未定义的行为,未初始化的内存和可能的浮点数学。

如果您启用尽可能多的警告,您可能会检测到某些形式的UB,如果碰巧是这种形式的原因。

否则我认为你将陷入不得不在各个点转储程序状态并比较每个检查点以查看分歧发生的位置。