Objective-C
iPhone
Xcode
iOS
Swift

バグのことは嫌いになってもXcodeのことは嫌いにならないでください。

More than 3 years have passed since last update.

スマホエンジニア勉強会potatotips #21にて以下の発表をしてきました。
Xcodeでデバッグするならこれを忘れないで!というお話です。
バリバリiOSの開発をされている方はすでにご存知の内容だと思いますので、新人が入ってきた時などにXcodeのことが嫌いになる前に教えてあげてください。

1.忘れないでException Breakpointのこと

こんなことありませんか?
アプリがクラッシュした時にいつもAppDelegateで止まっている(下の画像みたいな状態にいつもなる)。
image
こうなってしまうとコード上で本当に問題のある箇所がどこなのかよくわからず
本質的な原因はスタックトレースなどをみて自分で探しにいくことになります。
開発に慣れている人ならそれでもいいですが、もうちょっと分かりやすくしたいです。

 この状態は、実は例外発生時のbreakpointを設定していないことが原因です。
Xcodeでも例外発生時にbreakpointを仕込むことができて、設定箇所はXcodeの左下のほうにある+をクリックすると出てくる「Add Exception Breakpoint」を選べば設定できます。
image

こいつを選ぶとAll Exceptionというbreakpointが追加されます。
ちなみに、breakpointマークのところで右クリックをするとさらにメニューが出てきて、
「Edit Breakpoint...」を選択するとbreakpointの詳細設定ができるようになります。
ここの「Action」はbreakpointが発生した時に実行するコマンドを記述することができます。
ここでは「po $arg1」というコマンドを設定しています(例外発生の説明を出力するコマンドです)。
image
この設定をしておくとちゃんと
ええ感じで例外が発生した箇所でbreakpointが発動して止まってくれて
image
ええ感じで原因説明がコンソールに表示されるようになります。
image
他のIDE使っていた人もこの動きなら違和感を感じないですよね。
なんでデフォルトでこのせって・・・(略

2.Xcodeで設定を共有しよう。

あとはこの設定をプロジェクト毎にやるのは面倒なので
Xcode内で共有できるようにしましょう。

共有したいbreakpointを右クリックして表示されるメニューで「Move Breakpoint To」を選択して
さらに「User」を選択しましょう。これでXcode上でbrekpoint設定が共有されました。
試しに新規プロジェクトを作成してbreakpoint設定画面を開くと設定されていることが
確認できると思います。
image

ここまでやっておけば他のIDEでのデバッグに慣れている人もXcode使いやすくなるはず!
ぜひこの設定はやっておきましょう。
新人のiOSエンジニアが入ってきたときも是非一番最初に教えてあげましょう。

参考)potatotips #21 発表資料
バグのことは嫌いになってもXcodeのことは嫌いにならないでください