Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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
ご清聴ありがとうございました!