我的源代码中的主要方法a.c接受2个参数:一个是文件名,另一个是整数。我像下面这样运行:
./a.out filename1.txt 3
但是当我尝试使用frama-c切片时
frama-c a.c filename1.txt 3 -slice-......
Framac抛出一个错误,说找不到文件3 ???
当我输入filename1.txt_3并在代码中单独提取它们时,我也尝试了其他选项,但即使这样,frama-c也不喜欢它。它抱怨它无法找到文件filename1.txt_3。
请告诉我在运行Frama C时如何向源发送多个参数
答案 0 :(得分:1)
如果您的分析程序需要命令行参数,您通常需要编写void
函数来构建参数argc
和argv
并将它们传递给main()
函数已分析的程序:
int analysis_main(void) {
char *argv[] = { "myprogram", "filename1.txt", "3", 0 };
return main(3, argv);
}
请注意,如果目标是拥有" filename1.txt"用作要使用fopen()
打开的文件的名称,并使用fread()
读取,如果文件的内容与程序的行为相关,则最好为这两个函数提供实现,在调用时返回所需的结果。
相反,如果分析程序的第一件事就是将argv[2]
传递给strtol()
,您可能希望实际简化程序的那一部分而不是为strtol()
提供实现,其分析只会在没有必要的情况下引入复杂性。