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.4k
Xcodeの Memory graph を使った華麗なるデバッグ
MiyasakaKazutoshi
March 19, 2019
Tweet
Share
More Decks by MiyasakaKazutoshi
See All by MiyasakaKazutoshi
本当はこわいLLDB
miyasakakazutoshi
8
2.1k
miyasaka_iosdc_lldb_cfp.pdf
miyasakakazutoshi
3
1.3k
Other Decks in Programming
See All in Programming
Ruby Pattern Matching
bkuhlmann
0
930
使ってみよう Azure AI Document Intelligence
kosmosebi
2
350
VS Code をプロダクトにどう取り込むか
onomax
1
630
CDKコントリビュートの最初の壁を越えよう! -簡単issueの見つけ方-
badmintoncryer
2
160
Implementing Design Systems in Swift
seyfoyun
0
370
『Railsオワコン』と言われる時代に、なぜブルーモ証券はRailsを選ぶのか
free_world21
1
330
Exploring the Implementation of “t.Run”, “t.Parallel”, and “t.Cleanup”
akarin
1
100
Go製Webアプリケーションのエラーとの向き合い方大全、あるいはやっぱりスタックトレース欲しいやん / Kyoto.go #50
utgwkk
6
1.7k
Ruby GitHub Packages
bkuhlmann
0
630
PHP8.3の機能を振り返る / Review of PHP 8.3 features
seike460
PRO
1
120
Netty Chicago Java User Group 2024-04-17
sullis
0
200
GitHub Actionsで泣かないためにやっておきたい設定 / Recommended GHA settings to avoid crying
pinkumohikan
3
560
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
43
12k
No one is an island. Learnings from fostering a developers community.
thoeni
16
2.1k
Optimizing for Happiness
mojombo
370
69k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
41
4.4k
Product Roadmaps are Hard
iamctodd
45
9.7k
Ruby is Unlike a Banana
tanoku
96
10k
Music & Morning Musume
bryan
41
5.6k
Building a Scalable Design System with Sketch
lauravandoore
457
32k
How to name files
jennybc
65
93k
A Philosophy of Restraint
colly
197
16k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
20
1.7k
VelocityConf: Rendering Performance Case Studies
addyosmani
321
23k
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コマンドの特⻑⾧長
ご清聴ありがとうございました!