c++ - 查找非常相似的程序执行

标签 c++ c unix

我想知道是否有可能/有人知道有什么工具可以比较两个相关程序(例如,类(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/

相关文章:

c - 在 C 中检测 64 位编译

链表中的 C 指针

c - makecontext 函数中的指针说明

c - wait(NULL) 函数不起作用,父进程总是在子进程之前运行

c# - 使用 .NET 中的 pHash

c - 使用 C 套接字 : Address already in use

java - 我应该使用哪个 Eclipse 来使用 Java、C、Bash 和 Perl?

c++ - 如何将混合(asm、C++)源代码编译成 32 位程序?

c++ - 通过指向数据成员的指针进行类成员访问是否被视为成员访问表达式?

c++ - 对 Class::Class/Function 的 undefined reference (OOP 初学者)