sample/c/sample1.cにおける
strtokの動作を確認してみよう.
次のように-gオプションをつけてgccでコンパイルすれば,gdb上でこのプログラムをデバッグすることができる.
% gcc -g -o sample1 sample1.c % gdb sample1 ... gdbのメッセージ ... (gdb)
(gdb) run Starting program: .../sample1 foo, bar, hoge (foo, bar, hoge を入力) 1 = foo; 2nd = bar; 3 = hoge [Inferior 1 (process XXXXX) exited normally]
次に,プログラム実行途中での変数の値を表示させて,strtokの動作を確 認してみよう. プログラムを最初のstrtokの手前で一時停止させるために,ブレーク・ポ イントを利用することができる.
(gdb) break 9
Breakpoint 1, main () at sample1.c:9 9 a = strtok(in, " ,\n");
(gdb) print in[0] $1 = 102 'f'
(gdb) print in $2 = "foo, bar, hoge\n\000\005..."
(gdb) printf "%s\n",in foo, bar, hoge (gdb) what in type = char [40]
(gdb) step 10 b = strtok(NULL, " ,\n");
(gdb) printf "%s\n",a foo (gdb) print in $3 = "foo\000 bar, hoge\n\000\005..."
(gdb) step 11 c = strtok(NULL, " ,\n"); (gdb) printf "%s\n",b bar (gdb) print in $4 = "foo\000 bar\000 hoge\n\000\005..."
ブレーク・ポイント以降の実行を続 けるには,continueコマンドを実行する.
(gdb) continue Continuing. 1st = foo; 2nd = bar; 3rd = hoge [Inferior 1 (process XXXXX) exited normally]
(gdb) info breakpoints
(gdb) delete 1
gdbを終了する場合は,quitコマンドを実行する.
NAKAZAWA Koji