« 戦争は変わった… | メイン | resurface »

2006年05月12日

kernel debugging(3)

では前回の続きからですので kgdb patch に含まれている README ファイルに関してです。これには大きく分けて 3 種類の説明が書かれています。それは、

  • Patch
  • Build
  • Module Debugging
です。

patch を行うために quilt というツールを使えばいいという説明がありますが、私は使いませんでしたのでここでは無視します。

さて、私の対象とする環境は普通の x86 ですので以下の patch をあてました。

  • core-lite.patch
  • i386-lite.patch
  • core.patch
  • i386.patch
  • 8250.patch
  • module.patch

これらの patch で -lite が付いているものは基本 patch のようなので関連するものに関してはそれらを先にあてます。patch のあてかた自体は kgdbquickstart-2.4.pdf が参考になります。

曰く、

$ patch -p1 < ${BASE_DIR}/linux-2.6.15.5-kgdb-2.4/core-lite.patch
のような感じです。

ここで、カレントディレクトリは kernel のソースを展開したディレクトリです。例えば /usr/src/kernels/linux-2.6.15.5 などです。ここは自分の環境に読み替えてください。引用されている ${BASE_DIR} がそれですね(補足2006.05.15 : この ${BASE_DIR} は /usr/src/kernels/ になります。${BASE_DIR} がそれ、は間違いですね)。

patch に関して簡単に補足しておくと、8250.patch はシリアルポートを用いてリモートデバッグをする場合の patch です。WinDbg ではシリアルポートの接続でデバッグを行っていたのでこれを使うことにしました。シリアルポート以外にはイーサネット接続でデバッグができるようで、その場合には eth.patch をあてます。私はこれでデバッグを行ったことが無いので説明はできません。

module.patch に関しては autoloaded module のデバッグに関して有用である、といったことが書かれていたのであてることにしました。実際にどういった効果があったかは調べていませんが、とりあえずあててあります。実際のデバッグではモジュールの autoload をしなかったため、どうでもよかったのかもしれません。


投稿者 napier : 2006年05月12日 00:11


トラックバック

このエントリーのトラックバックURL:
http://will.squares.net/mt/mt-modified-tb.cgi/388