FrontPage  Index  Search  Changes  RSS  Login

Firefoxのスタックトレースを取得する(Linux編)

ページを編集するにはログインが必要です。

FirefoxがクラッシュしてBugzilla.orgBugzilla-jpに報告すると、スタックトレースを付けてくれと言われることがあります。公式ビルドを使用している場合には、Crash Reporterでスタックトレースを見ることができます。ここでは、自前ビルドでスタックトレースを取得する方法を書いてみます。

準備

Linux上でFirefoxのスタックトレースを取得するためには、gdb(GNUデバッガ)が必要となりますので、あらかじめインストールしておいてください。Debianでは、

aptitude install gdb

でgdbをインストールすことができます。

デバッグビルドを作成する

.mozconfigの変更

標準的なビルドでは出来上がったオブジェクトにシンボルテーブルが含まれないため、クラッシュした箇所のアドレスしかわかりません。これではデバッグができないため、シンボルテーブルが含まれるようにデバッグビルドを作成します。

デバッグビルドを作成するためには、.mozconfigに

ac_add_options --enable-debug
ac_add_options --disable-optimize

を追加します。2行目は、最適化を抑止し、シンボルとアドレスの食い違いを防ぐためのオプションです。なお、.mozconfigについては、Firefoxをビルドする(Mercurial/Linux編)またはFirefoxをビルドする(CVS/Linux編)を参照してください。

ビルド

ソースファイルのあるディレクトリにカレントディレクトリを移動し、

make -f client clean
make -f client build

で、デバッグビルドを作成します。

スタックトレースを取得する

実行ファイルが作成されたディレクトリ(Firefoxをビルドする(Mercurial/Linux編)なら/home/hoge/source/mozilla/fx/dist/bin/)にカレントディレクトリを移動し、

./firefox -g

で起動することにより、gdbが起動しFirefoxがロードされます。(gdb)はコマンドプロンプトです。  (gdb) run gdb上でrunコマンドを実行することにより、Firefoxが起動します。

Firefoxがクラッシュすると、再びgdbのコマンドプロンプトが表示されますので、

(gdb) bt

とbtコマンドを発行することにより、スタックトレースを取得することができます。必要に応じて、エディタなどにコピーしてください。なお、gdbを終了する場合は、

(gdb) q

としてください。

Last modified:2010/03/22 22:01:05
Keyword(s):[Mozilla]
References:[Mozilla] [FrontPage]