Cygwinでデバッグ/エラーの出ない場合
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[Cygwinでデバッグ]]
#contents
** エラーの出ない場合 [#jdcd6295]
*** デバッグライト [#za88de3a]
プログラムの動作の詳細を確かめるために、変数の値を表示さ...
デバッグライトには、いくつかコツがあります。
- 変数の値の変化する後や、条件の成り立った直後、関数に入...
- 表示形式は "関数名: 変数名=値, 変数名=値" のような形式...
- 最終的には不要になるコードですが、削除してしまわずに、...
/* 1からn の合計を求める */
int sum(int n) {
int ret = 1; // 初期値がおかしいのだが...
for (int i=1; i<=n; i++) {
ret = ret + i;
printf("%s: i=%d, ret=%d\n", __func__, i, ret); ...
}
return ret;
}
このようなプログラムを実行すると、
sum: i=1, ret=2
sum: i=2, ret=4
...
と表示されて、ret の初期値のおかしいことに気付けるでしょ...
メモリの不正アクセスなどでプログラムが中断される場合には...
- fflush(stdout); で強制的に表示させます。(「フラッシュ...
- fprintf(stderr, "sum: i=%d, ret=%d\n", i, ret); と標準...
- printf("...\n"); と改行を含めると、このタイミングでフラ...
しかしながら、メモリを破壊しているような場合には、直後に...
終了行:
[[Cygwinでデバッグ]]
#contents
** エラーの出ない場合 [#jdcd6295]
*** デバッグライト [#za88de3a]
プログラムの動作の詳細を確かめるために、変数の値を表示さ...
デバッグライトには、いくつかコツがあります。
- 変数の値の変化する後や、条件の成り立った直後、関数に入...
- 表示形式は "関数名: 変数名=値, 変数名=値" のような形式...
- 最終的には不要になるコードですが、削除してしまわずに、...
/* 1からn の合計を求める */
int sum(int n) {
int ret = 1; // 初期値がおかしいのだが...
for (int i=1; i<=n; i++) {
ret = ret + i;
printf("%s: i=%d, ret=%d\n", __func__, i, ret); ...
}
return ret;
}
このようなプログラムを実行すると、
sum: i=1, ret=2
sum: i=2, ret=4
...
と表示されて、ret の初期値のおかしいことに気付けるでしょ...
メモリの不正アクセスなどでプログラムが中断される場合には...
- fflush(stdout); で強制的に表示させます。(「フラッシュ...
- fprintf(stderr, "sum: i=%d, ret=%d\n", i, ret); と標準...
- printf("...\n"); と改行を含めると、このタイミングでフラ...
しかしながら、メモリを破壊しているような場合には、直後に...
ページ名: