プログラムの動作の詳細を確かめるために、変数の値を表示させるのは、どの言語にも通用する、一番基本的な手法です。この変数表示のプリント文のことを「デバッグライト」(debug write) といいます。
デバッグライトには、いくつかコツがあります。
/* 1からn の合計を求める */ int sum(int n) { int ret = 1; // 初期値がおかしいのだが... for (int i=1; i<=n; i++) { ret = ret + i; printf("sum: i=%d, ret=%d\n", i, ret); // デバッグライト } return ret; }
このようなプログラムを実行すると、
sum: i=1, ret=2 sum: i=2, ret=4 ...
と表示されて、ret の初期値のおかしいことに気付けるでしょう。
メモリの不正アクセスなどでプログラムが中断される場合には、printしたはずの文字が表示されないことがよくあります。C言語のライブラリでは、処理の効率化のために、表示する内容は一旦バッファに蓄えてから、あるタイミングで表示することが多いです。不正終了した場合は、バッファにたまったまま表示されませんので、対策が必要です。いくつか方法があります。