付録 E. デバッグ

一般的な情報

デバッグは習熟可能なスキルです。 良いバグ報告のつくる方法を説明する文書は非常に沢山あります。 バグは逃げないしバグに殺されたりはしないので、行動に移す前にそれらを読んで下さい。 むしろ私達の方がそのバグを殺したい、あなたの助けが欲しいと思っています :-) 十分準備できたら戦場におもむきましょう。 Bugzilla Bug Reporting HOWTO (同和訳) と Simon Tathams How to Report Bugs Effectively という二つの素晴しい文書があります。

私たちは、いくつかの非公式パッチについては、 その性質からすべてをサポートすることはできません。 つまり、Fluxbox がクラッシュしたら、 適用したパッチなしでもクラッシュするのか確かめるべきです。 もしディストリビューションのメンテナがパッチを適用しているのであれば、 その問題について彼(女)に話してみて下さい。

もしデバッグについてこのガイドが提供する以上の助けが必要なら、 irc.freenode.net の #fluxbox に join して、 そこの誰かに手助けを求めることもできます。 そこにはいつも沢山の開発者と能力のある人達がいるので、 問題を解決できるかもしれません。

Fluxbox 固有の事項

Fluxbox の出力メッセージ

他のアプリケーションと同様に、Fluxbox は起動時からすべてのメッセージをコンソールに出力していきます。 問題は、通常すべての出力は text コンソールに出力されるということです。 Fluxbox を起動している行を exec xterm (かまたは好みの仮想端末) に変えて X11 を起動し、Fluxbox をその端末から起動してみれば、驚くなかれ、Fluxbox のすべてのメッセージを簡単に見ることができます。

必要な情報

沢山のことを知りたいので、すべてが揃っていることを確かめて下さい。

コアダンプについてはどうするか

Fluxbox がコアダンプしたら次のようにします: OPN のチャンネル #fluxbox に join して fluxgen にコアダンプしたと告げて下さい。 彼が求めるすべての情報を与えて下さい。 また彼はおそらく次のようにするように伝えてくるでしょう。 非常に沢山の作業となりますが、一般常識といくらかの Unix の経験がある人なら誰でもできます。 ああそれから GNU デバッガ gdb が必要です。

Fluxbox の再構築

ええよく読んでますね。 きちんとデバッグするには Fluxbox をデバッグシンボル付きで再構築しなければなりません。

通常と同じようにビルドしますが、make 実行時に次のオプションを追加します:

    $ CFLAGS=-Wall -g3 CXXFLAGS=-Wall -g3 make

公式サイトあるいはディストリビューションから取得したソース RPM を使うなら次のようにします:

    $ su
    # rpm -ivh fluxbox-0.1.11.1mdk.src.rpm
    # cd /usr/src/RPM/SPECS
    # env DEBUG=true rpm -ba fluxbox.spec
    # rpm -Uvh --force /usr/src/RPM/RPMS/i686/fluxbox*
    # exit
    $ mkdir -p ~/src/fluxbox
    $ cp -R /usr/src/RPM/BUILD/fluxbox* ~/src/fluxbox

[訳注: SRPM は必ずしも root でインストールする必要はありません。 むしろ訳者は以下のようにできるかぎりユーザ権限で行う方をおすすめします。

まず ~/.rpmmacros を準備し、パスやディレクトリの設定をします:

    $ cd ~
    $ pwd
    /home/foo
    $ cat ~/.rpmmacros
    %_topdir        /home/foo/rpm
    %_tmppath       /tmp
    $ mkdir -p ~/rpm/{BUILD,RPMS/{athlon,i{3,4,5,6}86,noarch},SOURCES,SPECS,SRPMS}
    $ rpm -Uvh fluxbox-0.1.11.1mdk.src.rpm
    $ env DEBUG=true rpm -ba ~/rpm/SPECS/fluxbox.spec
    $ sudo rpm -Uvh --force ~/rpm/RPMS/i686/fluxbox*
    ...

(sudo については Sudo Main Page などを参照のこと) :訳注終]

(そこでコアダンプを取得できるように) Fluxbox ディレクトリに移動します。 シェルはコアファイルを無効にする小粋な機能を持っているので、 確実にコアファイルを取得できるようにします: Go to the Fluxbox directory (So we get the core dump in the right place). The shell has a nifty feature that disables core-files so make sure you really get a core file with:

    $ ulimit -c unlimited

X11 を起動し、デバッグしましょう。 Fluxbox がコアを吐く動作をさせてデバッグ開始です:

    $ gdb fluxbox core

gdb 内で次のように入力します (最初の部分は gdb のプロンプトなので入力しないで下さい :)):

    (gdb) where

一杯出力されるでしょう。fluxgen が知りたいと思うのは # ではじまるすべての出力です。

さて、そのログをメールに貼り付け、~/.fluxbox/ 以下の四つの設定ファイルも添えて、fluxgen に送ります。

コアとソースコードディレクトリはまだ消さないでおいて下さい。 fluxgen は二三別の質問をしたいかもしれないし、そのときそれらが必要となります。 fluxgen が明確に求めないかぎりコアを送らないで下さい。 なぜならそれはシステム固有のもので、おそらくその必要はなく、 かつ容量が大きくなりがちですから。