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.4k
miyasaka_iosdc_lldb_cfp.pdf
miyasakakazutoshi
3
1.5k
Other Decks in Programming
See All in Programming
OpenTelemetryを活用したObservability入門 / Introduction to Observability with OpenTelemetry
seike460
PRO
0
320
아직도 SOLID 를 '글'로만 알고 계신가요?
sh1mj1
0
360
AI Agents with JavaScript
slobodan
0
110
小さく段階的リリースすることで深夜メンテを回避する
mkmk884
2
130
MCP世界への招待: AIエンジニアが創る次世代エージェント連携の世界
gunta
2
570
WordPress Playground for Developers
iambherulal
0
120
SideKiqでジョブが二重起動した事象を深堀りしました
t_hatachi
0
230
Modern Angular:Renovation for Your Applications @angularDays 2025 Munich
manfredsteyer
PRO
0
140
AI時代のプログラミング教育 / programming education in ai era
kishida
23
20k
Return of the Full-Stack Developer
simas
PRO
1
310
自分のために作ったアプリが、グローバルに使われるまで / Indie App Development Lunch LT
pixyzehn
1
120
コンテナでLambdaをデプロイするときに知っておきたかったこと
_takahash
0
150
Featured
See All Featured
Designing for Performance
lara
606
69k
How to train your dragon (web standard)
notwaldorf
91
5.9k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.8k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
VelocityConf: Rendering Performance Case Studies
addyosmani
328
24k
The Pragmatic Product Professional
lauravandoore
33
6.5k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.5k
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.3k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Code Review Best Practice
trishagee
67
18k
Designing for humans not robots
tammielis
250
25k
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コマンドの特⻑⾧長
ご清聴ありがとうございました!