Требования:
Учитывая программу C, мне нужно определить, читают ли функции, обращающиеся к глобальным переменным, или записывая их.
Пример кода:
#include <stdio.h>
/* global variable declaration */
int g = 20;
int main()
{
/* writing the global variable */
g = 10;
/* reading the global variable */
printf ("value of g = %d\n", g);
return 0;
}
Выполняя приведенный выше код, я хочу сгенерировать файл журнала в следующем формате:
1- Global variable a written in function main() "TIME_STAMP"
2- Global variable a read in function main() "TIME_STAMP"
Исследования:
Я вполне могу добиться этого, выполнив статический анализ исходного кода в соответствии с приведенной ниже логикой:
- Пройдите код c и определите утверждения, в которых глобальная переменная читается.
- Затем проанализируйте оператор c-кода, чтобы определить, если это оператор чтения или записи. (Проверяя, является ли оператор ++ или - используется с глобальной переменной или любым назначением для глобальная переменная)
- Добавить оператор журнала над идентифицированным оператором, который будет выполняться наряду с выполнением этой инструкции.
Это не правильная реализация.
Некоторые исследования:
Я понял, как отладчики могут захватывать информацию.
Некоторые ссылки в Интернете: Как поймать функцию записи и вызова памяти с адресом записи