iOSDC Japan 2016 参加メモ: A-11 Xcodeで快適なデバッグライフを追い求める
Xcode
クラッシュしたらAppDelegateだった問題
- もしくはアセンブラだった問題
Exception Breakpointを追加
Breakpoint追加時に
Exception Breakpoint
を選んで追加- ただし、Exception前提で書かれていると意図と違うタイミングでbreakしてしまう
- storyboardがなければフォールバックする、とか
- ただし、Exception前提で書かれていると意図と違うタイミングでbreakしてしまう
Diagonosticsを設定
- 不正なメモリ操作を検知
- dynamic library
- Edit Schemaから設定できる
- Enable Zombi Object
- Enable Address Sanitizor -> パフォーマンスは下がる
- アセンブラレベルまでクラッシュした場合、これがあれば追える
どのViewControllerかわからない問題
新しいプロジェクトに入ると。。。
Symblic Breakpointを追加
- SymbolにviewWillAppear / viewDidLoadなどを追加
- commandで
bt 0
するとでる
- commandで
- viewControllerで設定しておかないと、Symbolic Breakpointが効かない
- SymbolにviewWillAppear / viewDidLoadなどを追加
Share Breakpointすると、チーム間で共有できる
起動時に特定のViewControllerにしたい問題
- デバッグ時に深いページ開くの辛い。。。
- Environment Variables
端末のログやファイルを取得したい問題
実機のログやRealmをみたい
- できるけどめんどくさい
LLDBを使って該当ファイルをSlackに送信
- breakpointでbreakしてコマンドを打つ
- gistに公開しました
./llidbinit
の中に呼び出しを入れておく
まとめ
- 快適になると良いね!
QA
Closureの中でオブジェクトを参照する方法とかありますか?
- lldbが巧くフレームを取れてないのが悪そう
- 2連発で取ると巧く行くことはある。。。けど基本諦めてる
Breakpointとlogが多すぎてわからなくなるのはどうしてますか?
- Loglevelを切り替えられるようにしたりして、フィルタしてる