IT戦記

プログラミング、起業などについて書いているプログラマーのブログです😚

Mac 2 日目の僕でも出来た! XCode を使った Firefox デバッギング

ちょっと釣りっぽいタイトルでごめんなさいw

でも、本当に簡単に出来るので皆様もお試しあれ。あと、 Mac まだよくわかってないのですごい回りくどいことやってるかもしれないので、そのときは指摘してくだしあ><

じゃあ、いってみよう!

1. Firefox のソース持ってくる!
$ mkdir ~/source
$ cd ~/source
$ export CVSROOT=:pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot
$ cvs login
pass:anonymous
$ cvs co mozilla/client.mk mozilla/browser/config
$ cd ~/source/mozilla
$ make -f client.mk pull_all MOZ_CO_PROJECT=browser

とやるとソースがダーっとダウンロードされる。
今は ~/source ってところで作業する前提でやってみる

2. ビルドに必要なものはそろってる?
$ sudo port install libidl
$ sudo port install autoconf213

ほかにも何か必要なものとかあるのかなあ?多分これくらいしかいれてないと思うんだけど

3. .mozconfig というファイルを作っちゃう!

以下の場所*1にファイルを作ります。

~/source/mozilla/.mozconfig

内容は以下の通り。ここに書いてある通りやったら行けました!感謝><

mk_add_options MOZ_CO_PROJECT=browser
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-@CONFIG_GUESS@
ac_add_options --enable-application=browser
ac_add_options --disable-optimize
ac_add_options --disable-tests
ac_add_options --enable-debug
ac_add_options --enable-svg

(追記)takenspc 様の指摘で修正いたしました。ありがとうございます。

4. configure して make !

めっちゃ時間がかかるので寝る準備をしてからやったほうがいいかもしれません><

$ ./configure --disable-installer ; make

成功すると

~/source/mozilla/dist/MinefieldDebug.app

というディレクトリが生成されます。

5. XCode を起動

XCode は以下の場所にあります。

/Developer/Applications/Xcode.app
6. プロジェクトの作成

ファイル → 新規プロジェクト を実行

空のプロジェクト → 次へ → プロジェクト名を入れて(今は mozdebug にしてみた) → 完了

そしたら、こんな感じの画面が出てくる

7. 実行可能ファイルの設定

プロジェクト → 新規カスタム実行可能ファイルを実行

以下のようなダイアログが出るので

実行可能ファイル名は適当に、実行可能ファイルのパスは

/Users/<user>/source/mozilla/dist/MinefieldDebug.app/Contents/MacOS/firefox-bin

と入れる(絶対パスで入れてね!相対だとなぜか動かない)
で、ポチっと完了を押す。
なんか設定っぽいダイアログが出る*2のでデバッグタブを開いて

ソースファイルを検索する追加のディレクトリに以下のディレクトリを追加してあげる

/Users/<user>/source/mozilla/

これも絶対パス

8. デバッグ開始

まず、二重起動にならないように Firefox をすべて終了させる。
デバッグ → 実行可能ファイルをデバッグ を選択する。

するとブラウザが起動し、ブラウザと一緒にこんなウィンドウが起動する

で、この右ペインにはソースをドラッグできるので、あとは、ブレークポイントとか張り放題!
ステップ実行とかコールスタックのチェックとか変数のモニタリングとかも完璧!

完成!Xcode 万歳!ddd とかより全然使いやすいわー

まとめ。ひゃっほーい!

途中から説明が雑になったのはめんどくさくなったから><っていうのは内緒です。

*1:~/source は各自の作業場所に脳内変換してください

*2:出ない人は プロジェクト → アクティブな実行可能ファイル'MinefieldDebug'の編集で出ます。