我想知道是否有可能/有人知道有什么工具可以比较两个相关程序(例如,类(class)作业)的执行情况,看看它们有多相似。例如,不是比较函数的名称,而是比较它们如何使用系统调用。一个愚蠢的情况是测试 C 字符串是否在多个一种情况一个单独的程序中打印为(参见下面的示例)。
printf("%s",str)
或者作为
for (i=0;i<len;i++) printf("%c",str[i]);
我没有对此进行太多思考,但我认为 strace/ltrace (甚至可能是 oprofile)将是一个很好的起点。特别是,这适用于 UNIX C/C++ 程序。
谢谢。
最佳答案
如果您有权访问这两个程序的源代码,您可以构建函数图(每个函数是一个节点,如果 A 调用 B(),则存在从 A 到 B 的边),并计算一些图相似度度量。这将捕获通过重命名和重组而生成的源代码拷贝。
关于c++ - 查找非常相似的程序执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/850370/