FrontPage  Index  Search  Changes  RSS  Login

秀の介Wiki - Firefoxのスタックトレースを取得する(Linux編) Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

{{toc}}

Firefoxがクラッシュして[[Bugzilla.org]]や[[Bugzilla-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をビルドする(Linux(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
としてください。