#iosdc 2016 A-10 Xcode で快適なデバッグライフを追い求める

twitter.com

僕は怠惰な人間です。プログラミングの大半はデバッグに時間を費やすと思っているので、なるべく早く原因に辿りついたり効率のよいデバッグライフを送りたいと常々思っています。 プリントデバッグもいいのですが Xcode には便利な機能が色々とあります。それらを使うことで簡単に原因を特定できるケースがあります。 visualize されるのは分かりやすいですよね。 それらを tips で紹介できたらなと思います。

iosdc.jp

speakerdeck.com

Xcode で快適なデバッグライフを追い求める

f:id:niwatako:20160820154020j:plain

f:id:niwatako:20160820154039j:plain

フリーランスしています

f:id:niwatako:20160820154056j:plain

カメリオさんではサーバーサイドSwift

f:id:niwatako:20160820154115j:plain

Xcode 8 でプラグインが動かなくなりました。

f:id:niwatako:20160820154135j:plain

f:id:niwatako:20160820154136j:plain

iOSエンジニアにとってXcodeは武士の刀、料理人の包丁です。

Xcodeの機能を活用すればデバッグが完全することが有ります。原因に他ドイツくために情報が大いに越したことはありません。

Tipsを紹介します。

f:id:niwatako:20160820154230j:plain

f:id:niwatako:20160820154248j:plain

f:id:niwatako:20160820154249j:plain

f:id:niwatako:20160820154259j:plain

f:id:niwatako:20160820154306j:plain

f:id:niwatako:20160820154312j:plain

f:id:niwatako:20160820154330j:plain

f:id:niwatako:20160820154331j:plain

f:id:niwatako:20160820154332j:plain

f:id:niwatako:20160820154333j:plain

f:id:niwatako:20160820154334j:plain

f:id:niwatako:20160820154341j:plain

Diagonostics

f:id:niwatako:20160820154547j:plain

f:id:niwatako:20160820154549j:plain

f:id:niwatako:20160820154550j:plain

f:id:niwatako:20160820154551j:plain

f:id:niwatako:20160820154552j:plain

f:id:niwatako:20160820154554j:plain

f:id:niwatako:20160820154555j:plain

f:id:niwatako:20160820154556j:plain

f:id:niwatako:20160820154557j:plain

アセンブラレベルでも終える

どのViewControllerかわからない問題

f:id:niwatako:20160820154650j:plain

f:id:niwatako:20160820154652j:plain

f:id:niwatako:20160820154653j:plain

f:id:niwatako:20160820154655j:plain

f:id:niwatako:20160820154656j:plain

f:id:niwatako:20160820154720j:plain

bt 0 はLLDBのスタック。

f:id:niwatako:20160820154728j:plain f:id:niwatako:20160820154805j:plain

f:id:niwatako:20160820154806j:plain

f:id:niwatako:20160820154807j:plain

f:id:niwatako:20160820154808j:plain

f:id:niwatako:20160820154825j:plain

f:id:niwatako:20160820154826j:plain

なぜ bt0

f:id:niwatako:20160820154841j:plain

f:id:niwatako:20160820154842j:plain

f:id:niwatako:20160820154854j:plain

これと相性がいい。

お察しの通りXcode8で使えないですけどね

起動時に特定のViewControllerにしたい

f:id:niwatako:20160820154931j:plain

f:id:niwatako:20160820154933j:plain

f:id:niwatako:20160820154934j:plain

f:id:niwatako:20160820154943j:plain

f:id:niwatako:20160820155036j:plain

f:id:niwatako:20160820155037j:plain

f:id:niwatako:20160820155038j:plain

f:id:niwatako:20160820155039j:plain

f:id:niwatako:20160820155101j:plain

f:id:niwatako:20160820155117j:plain

f:id:niwatako:20160820155118j:plain

端末のログやファイルを取得したい問題

f:id:niwatako:20160820155128j:plain

f:id:niwatako:20160820155147j:plain

f:id:niwatako:20160820155149j:plain

f:id:niwatako:20160820155204j:plain

f:id:niwatako:20160820155213j:plain

f:id:niwatako:20160820155214j:plain

f:id:niwatako:20160820155221j:plain

f:id:niwatako:20160820155356j:plain

f:id:niwatako:20160820155358j:plain

f:id:niwatako:20160820155412j:plain

f:id:niwatako:20160820155422j:plain

f:id:niwatako:20160820155446j:plain

f:id:niwatako:20160820155447j:plain

自分のアクセストークンを設定してもらえたら使えます。

f:id:niwatako:20160820155517j:plain

他の便利機能の紹介

f:id:niwatako:20160820155526j:plain

f:id:niwatako:20160820155553j:plain

少しでも皆さんのデバッグライフが快適になると幸いです。

f:id:niwatako:20160820155629j:plain

Q&A

Qiitaで見ていたらObjective-Cなどでしか利用できないと書いてあるがいまはSwiftでつかえるか

Swiftだと使えないです。

クロージャーの中にブレークポイントをおいた時にオブジェクトを参照できないのは解決できるでしょうか

良い質問ですね。クロージャーで1行で書いたらダメで、2行にするとうまく撮れることがあるが、LLDBのせいだと思うが、その時は諦めます。

Diagonostic

診断するとかいう意味で、ディアノスティクとかだとおもいます

発音調べたんですけど

(読み上げ機能)

(会場笑い)

ありがとうございます。

Xcode8でもXcodeの署名を外せばプラグインを使えます。ログが出すぎてわからない時はどうしていますか

フィルターしています。不要なログは出さないようにする、ログレベルを設定しておく。Xcodeプラグインは全部のプラグインが動くわけではなくて一部のやつしか動かず、僕の作ったプラグインは全滅でした。

まとめ