Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Xcodeの Memory graph を使った華麗なるデバッグ
Search
MiyasakaKazutoshi
March 19, 2019
Programming
5
1.6k
Xcodeの Memory graph を使った華麗なるデバッグ
MiyasakaKazutoshi
March 19, 2019
Tweet
Share
More Decks by MiyasakaKazutoshi
See All by MiyasakaKazutoshi
本当はこわいLLDB
miyasakakazutoshi
8
2.3k
miyasaka_iosdc_lldb_cfp.pdf
miyasakakazutoshi
3
1.5k
Other Decks in Programming
See All in Programming
GitHub CopilotでTypeScriptの コード生成するワザップ
starfish719
26
5.9k
テストコード書いてみませんか?
onopon
2
340
React 19でお手軽にCSS-in-JSを自作する
yukukotani
5
560
PHPで学ぶプログラミングの教訓 / Lessons in Programming Learned through PHP
nrslib
4
1.1k
AppRouterを用いた大規模サービス開発におけるディレクトリ構成の変遷と問題点
eiganken
1
440
Запуск 1С:УХ в крупном энтерпрайзе: мечта и реальность ПМа
lamodatech
0
940
アクターシステムに頼らずEvent Sourcingする方法について
j5ik2o
6
700
CQRS+ES の力を使って効果を感じる / Feel the effects of using the power of CQRS+ES
seike460
PRO
0
240
QA環境で誰でも自由自在に現在時刻を操って検証できるようにした話
kalibora
1
140
Lookerは可視化だけじゃない。UIコンポーネントもあるんだ!
ymd65536
1
130
ChatGPT とつくる PHP で OS 実装
memory1994
PRO
3
190
traP の部内 ISUCON とそれを支えるポータル / PISCON Portal
ikura_hamu
0
180
Featured
See All Featured
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Building an army of robots
kneath
302
45k
Agile that works and the tools we love
rasmusluckow
328
21k
Fashionably flexible responsive web design (full day workshop)
malarkey
406
66k
What's in a price? How to price your products and services
michaelherold
244
12k
Rails Girls Zürich Keynote
gr2m
94
13k
The Power of CSS Pseudo Elements
geoffreycrofte
74
5.4k
Automating Front-end Workflow
addyosmani
1366
200k
For a Future-Friendly Web
brad_frost
176
9.5k
Unsuck your backbone
ammeep
669
57k
A better future with KSS
kneath
238
17k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
3
170
Transcript
Xcodeの Memory graph を使った華麗なるデバッグ @po_miyasaka try! Swift Pre Talks 2019
⾃自⼰己紹介 @po_miyasaka 「ペンギン村」に住む / 登⼭山 / LLDB /
Debug Navigator Memory Graph
現時点で⽣生成されている クラスインスタンスが すべて表示されている
もしこの画⾯面から 任意のプロパティやメソッドに 簡単にアクセスできたら便便利利
⭕ ブレークポイントを無理理に 作る必要はなくなる
⭕ ブレークポイントを無理理に 作る必要はなくなる ⭕ Memory Graphは いつでも表示できるので 使いやすい
ということで
これを実現するLLDBコマンド 「vinfo」を作りました。 (設定&インポート⽅方法はリポジトリのREAD.mdに記載) https://github.com/po-miyasaka/LLDB
アドレスを渡すと vinfoの使い⽅方
変数が⽣生成される。 vinfoの使い⽅方
メンバにもアクセスできる vinfoの使い⽅方
(デモが失敗した時に⾒見見る記事、Gifイメージあり) http://blog.penginmura.tech/entry/2019/02/03/215957 • プライベートなプロパティを確認 • プライベートなメソッドの実⾏行行 • View Hierarchyでの応⽤用 デモ
⽣生成された変数がSwift、ObjC どちらの⾔言語で扱うべきかを示す。 vinfoの出⼒力力について
「po」の代わりに以下のコマンドで⾔言語を使い分ける Swiftの場合「pos」 Objcの場合「poc」 (これらはvinfoのコード内に定義されたエイリアスです。) vinfoの出⼒力力について
「type lookup」 はメンバ⼀一覧を表示するLLDBコマンド。 vinfoの出⼒力力について
vinfoの出⼒力力について 「type lookup」 はメンバ⼀一覧を表示するLLDBコマンド。 実⾏行行結果
準拠しているプロトコルや エクステンションに派⽣生したメソッドなど も表示できる vinfoの出⼒力力について 実⾏行行結果
vinfoコマンドの特⻑⾧長 • アドレスからSwift, Objcクラスの変数を作成できる。 • 外部ライブラリのクラスに対しても使⽤用可能 • 「Debug View Hierarchy」でも使⽤用可能
• プライベートなメンバにもアクセスできる • type lookup でメンバを確認できる • セットアップが簡単 • コードに影響を与えることなく活⽤用できる
• アドレスからSwift, Objcクラスの変数を作成できる。 • 外部ライブラリのクラスに対しても使⽤用可能 • 「Debug View Hierarchy」でも使⽤用可能 •
プライベートなメンバにもアクセスできる • type lookup でメンバを確認できる • セットアップが簡単 • コードに影響を与えることなく活⽤用できる vinfoコマンドの特⻑⾧長
ご清聴ありがとうございました!