两个c++程序之间的区别



我有一个C++程序,它有两个版本,一个版本的特性可以工作,但另一个版本不可以。有没有办法调试这两个版本之间的差异?具体来说,我使用的是Linux和g++。有没有一种方法可以使用类似KCachegrind的东西来查看差异调用图?或者gdb中有什么东西可以更快地查看这些函数调用的差异?

正在更新。。。这个程序太大了,无法查看所有的差异。首先,我想知道函数调用difference之间的路径,然后我可以选择在这些函数中执行diff命令。

我建议编写最简单的工作测试输入,该输入在新版本中会导致失败,但在前一版本中会成功。一旦您有了这个测试用例,就可以从源存储库中的不同中间提交构建中间版本(我建议进行二进制搜索以限制重新编译的次数,如果您碰巧使用gitgit bisect是一个很好的工具)。

一旦您隔离了有问题的提交,请仔细查看它,或者在必要时使用调试器使用测试输入跟踪代码。希望您最终应该得到一个相对较小的更改来验证。

您是否考虑过使用gprof?一旦你安装了它(我相信大多数主要发行版默认都有),就可以用"-pg"选项编译你的代码。当您运行可执行文件时,它将生成一个gmon.out文件,其中包含包括调用图在内的分析信息。

看看这个教程,更好地了解它的工作原理。

使用gdb最接近于此的方法是使用多进程调试[1]对于一些自定义gdb和python脚本,至少有一个这样的例子可以这样使用gdb[2]

我认为它不太可能按照你想要的方式工作。尽管如果你决心以这种方式使用gdb,它可能会给你一些想法。

[1]http://sourceware.org/gdb/current/onlinedocs/gdb/Inferiors-and-Programs.html#Inferiors-和程序

[2]http://gitorious.org/misc-gdb-stuff/misc-gdb-stuff/trees/master/misc_gdb/lockstep

相关内容

  • 没有找到相关文章

最新更新