RTC を修正継続機能とともに使用すると、プログラミングエラーを簡単に分離して修正することができます。修正継続機能を組み合わせて使用すると、デバッグに要する時間を大幅に削減することができます。次に例を示します。
% cat -n bug.c
1 #include <stdio.h>
2 char *s = NULL;
3
4 void
5 problem()
6 {
7 *s = 'c';
8 }
9
10 main()
11 {
12 problem();
13 return 0;
14 }
15
% cat -n bug-fixed.c
1 #include stdio.h
2 cahr *s = NULL;
3
4 void
5 problem()
6 {
7
8 s = (cahr *)malloc(1);
9 *s = 'c';
10 }
11
12 main()
13 {
14 problem();
15 return 0;
16 }
% cc -g bug.c
% dbx -C a.out
a.out のシンボル情報を読んでいます
rtld /usr/lib/ld.so.1 のシンボル情報を読んでます
librtc.so のシンボル情報を読んでいます
libc.so.1 のシンボル情報を読んでいます
libdl.so.1 のシンボル情報を読んでいます
(dbx) check -access
アクセス検査 - ON
(dbx) run
実行中: a.out
(プロセス id 10804)
実行時検査を有効にしています...終了
非割り当て領域への書き込み (wua):
1 バイト書き込み を NULL ポインタを通して しようとしました。
現関数 :problem
7 *s = 'c';
(dbx) pop
main で停止しました 行番号 12 ファイル "bug.c"
12 problem();
(dbx) cp bug-fixed.c bug.c
(dbx) fix
修正中 "bug.c" ......
pc は "bug.c":14 に移動しました
main で停止しました 行番号 14 ファイル "bug.c"
14 problem();
(dbx) cont
実行完了。終了コードは、0 です
(dbx) quit
'a.out' の下記のモジュールは変更されました (修正済み):
bug.c
プログラムを再構築することをお忘れなく。