Slide 1

Slide 1 text

Xcodeの Memory graph を使った華麗なるデバッグ @po_miyasaka try! Swift Pre Talks 2019

Slide 2

Slide 2 text

⾃自⼰己紹介 @po_miyasaka 「ペンギン村」に住む / 登⼭山 / LLDB /

Slide 3

Slide 3 text

Debug Navigator Memory Graph

Slide 4

Slide 4 text

現時点で⽣生成されている クラスインスタンスが すべて表示されている

Slide 5

Slide 5 text

もしこの画⾯面から 任意のプロパティやメソッドに 簡単にアクセスできたら便便利利

Slide 6

Slide 6 text

⭕ ブレークポイントを無理理に   作る必要はなくなる

Slide 7

Slide 7 text

⭕ ブレークポイントを無理理に   作る必要はなくなる ⭕ Memory Graphは   いつでも表示できるので   使いやすい

Slide 8

Slide 8 text

ということで

Slide 9

Slide 9 text

これを実現するLLDBコマンド 「vinfo」を作りました。 (設定&インポート⽅方法はリポジトリのREAD.mdに記載) https://github.com/po-miyasaka/LLDB

Slide 10

Slide 10 text

アドレスを渡すと vinfoの使い⽅方

Slide 11

Slide 11 text

変数が⽣生成される。 vinfoの使い⽅方

Slide 12

Slide 12 text

メンバにもアクセスできる vinfoの使い⽅方

Slide 13

Slide 13 text

(デモが失敗した時に⾒見見る記事、Gifイメージあり) http://blog.penginmura.tech/entry/2019/02/03/215957 • プライベートなプロパティを確認 • プライベートなメソッドの実⾏行行 • View Hierarchyでの応⽤用 デモ

Slide 14

Slide 14 text

⽣生成された変数がSwift、ObjC どちらの⾔言語で扱うべきかを示す。 vinfoの出⼒力力について

Slide 15

Slide 15 text

「po」の代わりに以下のコマンドで⾔言語を使い分ける Swiftの場合「pos」 Objcの場合「poc」 (これらはvinfoのコード内に定義されたエイリアスです。) vinfoの出⼒力力について

Slide 16

Slide 16 text

「type lookup」 はメンバ⼀一覧を表示するLLDBコマンド。 vinfoの出⼒力力について

Slide 17

Slide 17 text

vinfoの出⼒力力について 「type lookup」 はメンバ⼀一覧を表示するLLDBコマンド。 実⾏行行結果

Slide 18

Slide 18 text

準拠しているプロトコルや エクステンションに派⽣生したメソッドなど も表示できる vinfoの出⼒力力について 実⾏行行結果

Slide 19

Slide 19 text

vinfoコマンドの特⻑⾧長 • アドレスからSwift, Objcクラスの変数を作成できる。 • 外部ライブラリのクラスに対しても使⽤用可能 • 「Debug View Hierarchy」でも使⽤用可能 • プライベートなメンバにもアクセスできる • type lookup でメンバを確認できる • セットアップが簡単 • コードに影響を与えることなく活⽤用できる

Slide 20

Slide 20 text

• アドレスからSwift, Objcクラスの変数を作成できる。 • 外部ライブラリのクラスに対しても使⽤用可能 • 「Debug View Hierarchy」でも使⽤用可能 • プライベートなメンバにもアクセスできる • type lookup でメンバを確認できる • セットアップが簡単 • コードに影響を与えることなく活⽤用できる vinfoコマンドの特⻑⾧長

Slide 21

Slide 21 text

ご清聴ありがとうございました!