次のページ 前のページ 目次へ

8. デバッグ

残念ながら新しいドライバのデバッグは辛いものです。 例えば SVGA チップセットのプログラミング (レジスタ設定) を間違えた場合には マシンが固まってしまうでしょう。 しかし、もっと頻繁に起きる可能性があるのはディスプレイの表示が消えてしまう ことです。この場合、正常に戻すためには再起動させる必要があるでしょう。 新しく生成したサーバーを実行してテストする際には、外部端末を繋ぐか、 ネットワークからログインすることを *強く* お勧めします。 これはサーバに対してデバッガを使用することを可能にする唯一の合理的な方法です。 複数の VT を使いながらのデバッグするのは基本的に時間の無駄です。

マシンが固まってしまう危険性の存在を考慮すると、サーバを起動する前に 1、2 回 `sync' コマンドを実行しておくことは *とても* 良い考えです。 さらに言えば、(本来は不要なはずの fsck が実行されることを避けるために) デバッグ実行中はどうしても必要なファイルシステム以外、すべてアンマウント しておきましょう。

標準では、サーバはデバッグ用のシンボル抜きで生成されます。 デバッグできるように生成したサーバは *とても* 大きなものになります。 しかしドライバーコードをデバッグのために再構築することはとても簡単です。 次の手順で行ってください:

  1. ドライバのディレクトリへ移動してください。
  2. Makefile を編集してください。 `CDEBUGFLAGS' の *二番目* の定義を探して、それを次のように修正してください。
                    CDEBUGFLAGS = -g -DNO_INLINE
            
    
    (これはデバッグ用シンボルを有効にし、シングルステップ実行時 の悪夢を引き起こす関数のインライン展開を無効にします。)
  3. `sdc_driver.o' ファイルを消してください。
  4. 上記の手順に従って、サーバを再構築してください。 (または、Makefile を修正する代わりに、古い .o ファイルを消した後で 単に `make CDEBUGFLAGS="-g -DNO_INLINE"' を実行するという 方法もあります。この後上記の手順でサーバを再構築してください。)

これによって、ドライバ関数にブレークポイントを設定してシングルステップ実行 させることのできるサーバが生成されます。ソースツリー中で作業を行っていて、 かつ SVGA プログラミングを学習し始めたばかりならば、vgaHW.c も同様にデバッグ 可能にして再構築すると便利でしょう。


次のページ 前のページ 目次へ