簡體   English   中英

切片時將多個參數傳遞給C文件

[英]Passing multiple arguments to C file when slicing

我的源代碼ac中的main方法接受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時如何向源發送多個參數

如果所分析的程序需要命令行參數,則通常需要編寫一個void函數,以構建參數argcargv並將它們傳遞給所分析程序的main()函數:

int analysis_main(void) {
  char *argv[] = { "myprogram", "filename1.txt", "3", 0 };
  return main(3, argv);
}

請注意,如果目標是將“ filename1.txt”用作要通過fopen()打開並通過fread()讀取的文件的名稱,並且文件的內容與程序的行為有關,您最好為這兩個函數提供實現,而在調用時返回期望的結果。

相反,如果所分析的程序要做的第一件事是將argv[2]傳遞給strtol() ,則您可能希望實用地簡化程序的這一部分,而不是提供strtol()的實現,該方法的分析只會引入沒有必要的復雜性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM