秀の介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
としてください。
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をビルドする
./firefox -g
で起動することにより、gdbが起動しFirefoxがロードされます。(gdb)はコマンドプロンプトです。
(gdb) run
gdb上でrunコマンドを実行することにより、Firefoxが起動します。
Firefoxがクラッシュすると、再びgdbのコマンドプロンプトが表示されますので、
(gdb) bt
とbtコマンドを発行することにより、スタックトレースを取得することができます。必要に応じて、エディタなどにコピーしてください。なお、gdbを終了する場合は、
(gdb) q
としてください。