Существует ли инструмент, чтобы перечислить используемые глобальные переменные и произвести функцией C?

Я хочу составить список глобальных переменных/макросов, использованных функцией и выводом функцией. Например, для:

void myfn(void) {
  out1 = in + 1;
  out2 = 2;
}

.. инструмент перечислил бы исходные данные как 'в' и выводы как 'out1' и 'out2'.

Кто-либо знает о таком инструменте?

7
задан starblue 24 September 2012 в 14:53
поделиться

3 ответа

Понимание C / C ++ ( http://www.scitools.com/products/understand/ )

{{ 1}}
3
ответ дан 7 December 2019 в 03:15
поделиться

Наш DMS Software Reengineering Toolkit - это настраиваемый инструмент анализа программ с производственным качеством C Front End.

Он анализирует язык C, строит AST и таблицы символов, обеспечивает анализ потоков управления и данных, строит графы глобальных вызовов и имеет точки анализа. Он может быть настроен для извлечения этой информации; на самом деле, мы поставили инструмент на базе DMS крупному производителю автомобилей для создания инструмента для извлечения почти точно такой информации.

Если вы придерживаетесь только информации таблицы символов, вы можете извлечь "прямое чтение или запись", как в вашем примере. Если использовать информацию графа вызовов, можно обнаружить чтения или записи в глобальные файлы, вызванные вызовами других функций. Если вы используете анализ по точкам, вы можете обнаружить (консервативно) чтения или записи в глобальные переменные через перенаправление.

3
ответ дан 7 December 2019 в 03:15
поделиться

Clang по крайней мере может это сделать, но это может быть не самый простой способ. Вам нужно будет взаимодействовать с C ++ API.

1
ответ дан 7 December 2019 в 03:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: