Передача нескольких аргументов в файл C при нарезке
Мой основной метод в моем исходном коде ac принимает 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
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()
анализ которого привел бы к сложности только там, где не было необходимости.