【发布时间】:2014-11-08 19:59:30
【问题描述】:
如果我使用-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 标志编译它,它都不会打印有关矩阵或向量的信息。
【问题讨论】:
-
添加
-DDEBUG选项。 -
你试过用
-g -DDEBUG=1编译吗? -
-g并不神奇。它没有默默地定义任何宏(那太可怕了)。它只在二进制文件中生成调试信息。您需要自己添加宏。 -
我不确定这是不是重复的@Barry,你能详细说明一下吗? :)