Я использую frama-c, чтобы сделать некоторые эксперименты по нарезке программ. Инструмент замечательный, и есть много разных типов нарезки (например, по результату или по заявлению). Я использую структуру данных программы, как:Нарезка с использованием frama-c
typedef struct ComplexData {
int x;
int y;
char string_[100];
size_t n;
} ComplexData;
Это просто пример для того, чтобы понять, как Frama-с может порезать программу по результату производства функции. В принципе, метод main вызывает функцию, которая возвращает значение типа ComplexData. Как выполняется сравнение между различными исполнениями? Есть проверка на каждое значение структуры? Нравится this?
Большое спасибо за ваш четкий ответ. Большинство статей, которые я читаю, описывают _динамический slicing_ и, в частности, они пытались сравнить траекторию на разных исполнениях. Итак, может ли абстрактная интерпретация использоваться только для _статической нарезки_? Наконец, в отношении того, что я прочитал, траектория была сохранена в выходном файле, и я видел только критерий, основанный на примитивах данных, таких как _integers_. По этой причине я подумал, что аналогичное сравнение для структур данных. Даже если в этом случае нужно сравнить каждое поле. – Luke
Правильно, я забыл про динамическую нарезку. Я отредактировал свой ответ соответственно. Абстрактная интерпретация по своей сути статична, поэтому я не думаю, что ее можно использовать для динамического среза. – byako
Хорошо. Да, ты прав. Во всяком случае, это может иметь большие преимущества, когда вам приходится сравнивать сложные структуры данных. – Luke