我有一个 C 程序,我想跟踪属于与具体输入相对应的执行路径的所有分支条件。例如,考虑一个简单的程序:
#include <stdio.h>
#include <string.h>
int test(char* a) {
if (strcmp(a, "123") == 0)
return 0;
if (strcmp(a, "123") < 0)
return -1;
else
return 1;
}
int main() {
char* a;
return test (a);
}
有了a = "1234"
,程序返回1
和对应的路径条件为strcmp(a, "123") > 0
。我想收集strcmp
,"123"
和这个运算符的值 (-1)。有什么方法可以让我这样做吗?我首先考虑使用一些 C 解析器,但似乎并不那么简单。要获取参数的值,我们必须处理指针分析或外部库调用,我不知道如何解决。