получить историю содержимого глобальных переменных после выполнения кода C - PullRequest
0 голосов
/ 12 апреля 2019

Я ищу инструменты или код, который позволяет мне извлекать историю содержимого глобальных переменных после выполнения функции в C.

Я пытаюсь использовать некоторые инструменты профилирования, но это не работает для языка C

Например, у меня есть этот код:

int a =1;
int b =1;
for (i=1;i++;i<4){
    a = a+i;
    b = b*i;
}

Я хочу отобразить после выполнения результат или отчет, подобный этому:

 a=1  |  b=1
 a=2  |  b=1
 a=4  |  b=2
 a=7  |  b=6

Ответы [ 2 ]

0 голосов
/ 13 апреля 2019

Вы можете сделать следующее:

#include "stdio.h"

int a = 1;
int b = 1;

#if DEBUG_HISTORY
int * pa = &a;
int * pb = &b;

#define a printf("a = %d\n", a); (*pa)
#define b printf("b = %d\n", b); (*pb)
#endif

int main()
{
  int i;

  for (i=1; i<4; i++)
  {
    a += i;
    b *= i;
  }
}

Скомпилируйте с опцией -DDEBUG_HISTORY и получите:

a = 1
b = 1
a = 2
b = 1
a = 4
b = 2
0 голосов
/ 12 апреля 2019

Простейший подход, которого в большинстве случаев достаточно, - это вывод переменных с использованием, например, printf из заголовка stdio.h:

int a =1;
int b =1;
for (i=1;i++;i<4){
    printf("%d %d\n", a, b);
    a = a+i;
    b = b*i;
}
printf("%d %d\n", a, b); /* for the last set of values */
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...