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

Другие вопросы по тегам