Я хочу, чтобы выполнить "кучу кода", если я скомпилировал исходный файл с -g
флаг (g++ компилятор), я думал, в чем - то вроде этого:
int main()
{
// do some calculations...
#if DEBUG
fputs("MATRIX:\n", stdout);
Print_Matrix(A, M, N);
fputs("VECTOR:\n", stdout);
Print_Vector(x, N);
fputs("PARALLEL RESULT\n", stdout);
Print_Vector(y, M);
fputs("SERIAL RESULT\n", stdout);
Print_Vector(y_serial, M);
#else
fprintf(stdout, "SIZE: %d x %d AND %d THREADS\n", M, N, NUM_OF_THREADS);
fprintf(stdout, "TIEMPO CONC.:%d mseg\n", (int)final_par);
fprintf(stdout, "TIEMPO SERIAL:%d mseg\n", (int)final_serial);
#endif
}
Цель состоит в том, что я буду работать в режиме DEBUG
если размер матрицы мал, если нет, тогда я напечатаю время выполнения (для больших матриц).
Проблема заключается в следующем: если я скомпилирую его с флагом -g
или без -g
, он никогда не печатает информацию о матрице или векторе.
Если вы скомпилируете с DEBUG
в качестве флага, вы будете выполнять printf()
, если не fprintf()
.
Обратите внимание, что -g
- это не тот, на который нужно сосредоточиться, поскольку он будет генерировать только отладочную информацию, которую мы можем использовать позже с помощью отладчика.
Проверьте этот простой пример.
px.c
#include <stdio.h>
int main(void)
{
#if DEBUG
printf("Somewhere DEBUG was feeded to this program\n");
#else
printf("Somewhere DEBUG was NOT feeded to this program\n");
#endif
return 0;
}
Исполнение:
samaras@samaras-A15:~$ gcc -Wall px.c -o myexe
samaras@samaras-A15:~$ ./myexe
Somewhere DEBUG was NOT feeded to this program
samaras@samaras-A15:~$ gcc -Wall -DDEBUG px.c -o myexe
samaras@samaras-A15:~$ ./myexe
Somewhere DEBUG was feeded to this program
-DDEBUG
.-g -DDEBUG=1
?