XcodeデバッグコマンドDaquan(LLDBチートシート)
Xcode Debugging Command Daquan
これはLLDBの一般的なコマンドテーブルであり、通常のデバッグで使用されるすべてのコマンドを網羅しており、開発中にバグをすばやく見つけてデバッグするのに役立ちます。
ヘルプを取得する
(lldb) help Copy code
すべてのコマンドとエイリアスを一覧表示します
(lldb) help po Copy code
入手po
コマンドヘルプファイル
(lldb) help break set Copy code
入手break set
サブコマンドヘルプドキュメント
(lldb) apropos step-in Copy code
検索ヘルプのドキュメントにはstep-in
コマンドが含まれています
コードの検索
(lldb) image lookup -rn UIAlertController Copy code
含まれているすべてを表示UIAlertController
そしてコンパイルまたは実行されるコード
(lldb) image lookup -rn (?i)hosturl Copy code
含まれているすべてを表示hosturl
コード、大文字と小文字は区別されません
(lldb) image lookup -rn 'UIViewController setw+:]' Copy code
表示UIViewController
すべてのプロパティが実装または書き換えられますsetter
メソッド
(lldb) image lookup -rn . Security Copy code
見つかったすべてを表示Security
モジュールコード
(lldb) image lookup -s mmap Copy code
IDをmmap
コードとして表示
ブレークポイント
(lldb) b viewDidLoad Copy code
ブレークポイントを作成し、すべてを中断するviewDidLoad
メソッド(Swift / Objective-c)
(lldb) b setAlpha: Copy code
oc setAlpha:
メソッドまたはoc alpha
属性setter
メソッドにブレークポイントを作成する
(lldb) b -[CustomeViewControllerSubclass viewDidLoad] Copy code
OC [CustomeViewControllerSubclass viewDidLoad]
にブレークポイントを設定
(lldb) rbreak CustomViewControllerSubclass.viewDidLoad Copy code
OC CustomViewControllerSubclass
またはSwfit viewDidLoad
を含め、OCクラスとSwiftクラス[CustomeViewControllerSubclass.viewDidLoad]
of ModuleName.CustomeViewControllerSubclass.viewDidLoad() -> ()
メソッドに一致する通常のブレークポイントを作成します。
(lldb) breakpoint delete Copy code
すべてのブレークポイントを削除します
(lldb) breakpoint delete 2 Copy code
ID2のブレークポイントを削除します
(lldb) breakpoint list Copy code
すべてのブレークポイントとそのIDを一覧表示します
(lldb) rbreak viewDid Copy code
通常のブレークポイント一致を作成します.*viewDid.*
(lldb) rbreak viewDid -s SwiftRadio Copy code
モジュール内SwfitRadio
通常のブレークポイント一致を作成.*viewDid.*
、
(lldb) rbreak viewDid(Appear|Disappear) -s SwiftHN Copy code
in Swift
Module viewDidAppear
with viewDidDisappera
ブレークポイントを作成する
(lldb) rb '-[UIViewController set' -s UIKit Copy code
in UIKit
モジュールにブレークポイントを作成し、含まれているすべてのOCでブレークポイント[UIViewController set
メソッド
(lldb) rb . -s SwiftHN -o Copy code
in SwiftHN
ブレークポイントはモジュール内のすべてのメソッドで作成されますが、ブレークポイントがトリガーされるとすぐにすべてのブレークポイントが削除されます
(lldb) rb . -f ViewController.m Copy code
ブレークポイントを作成し、侵入ViewController.m
内部のすべてのメソッドで
式(式)
(lldb) po 'hello, debugger' Copy code
印刷hello, debugger
(lldb) expression -lobjc -O -- [UIApplication sharedApplication] Copy code
print UIApplication
OC環境のインスタンス
(lldb) expression -lswift -O -- UIApplication.shared Copy code
print UIApplication
Swift環境のインスタンス
(lldb) b getenv (lldb) expression -i0 -- getenv('HOME') Copy code
getenv
にブレークポイントを作成してからgetenv
メソッドを実行します。プログラムは壊れますgetenv
メソッドが実行される場所
(lldb) expression -u0 -O -- [UIApplication test] Copy code
実行方法[UIApplication test]
この方法でアプリがクラッシュする場合は、呼び出しスタックを展開しないでください
(lldb) expression -p -- NSString *globalString = [NSString stringWithUTF8String: 'Hello, Debugger'] (lldb) po globalString Hello, Debugger Copy code
グローバル文字列変数を宣言しますglobalString
(lldb) expression -g -O -lobjc -- [NSObject new] Copy code
分析[NSObject new]
OCでの表現
ステッピング(ステッピング)
(lldb) thread return false Copy code
現在のコードの前にfalseを返します
(lldb) thread step-in Copy code
次のコード行を実行します
(lldb) thread step-over Copy code
次のメソッドを実行します
(lldb) thread step-out Copy code
現在の方法から抜け出す
(lldb) thread step-inst Copy code
メソッドを実行する場合は、それをステップ実行します。それ以外の場合は、コマンドセットを入力します。
GDBフォーマット(GDBデバッガーフォーマット)
(lldb) p/x 128 Copy code
16進形式でデータを出力します
(lldb) p/d 128 Copy code
10進形式でデータを出力する
(lldb) p/t 128 Copy code
バイナリ形式でデータを出力する
(lldb) p/a 128 Copy code
データをアドレスとして出力
(lldb) x/gx 0x000000010fff6c40 Copy code
スレーブアドレス0x000000010fff6c40
データを取得して8バイトで表示
(lldb) x/wx 0x000000010fff6c40 Copy code
スレーブアドレス0x000000010fff6c40
データを取得して4バイトで表示
記憶
(lldb) memory read 0x000000010fff6c40 Copy code
アドレスの読み取り0x000000010fff6c40
メモリ
(lldb) po id $d = [NSData dataWithContentsOfFile:@'...'] (lldb) mem read `(uintptr_t)[$d bytes]` `(uintptr_t)[$d bytes] + (uintptr_t)[$d length]` -r -b -o /tmp/file Copy code
リモートファイルからインスタンスを取得し、それをコンピューターに書き込みます/tmp/file
Go in
レジスターとアセンブリー(レジスターとアセンブリー)
(lldb) register read -a Copy code
システム内のすべてのレジスタを表示します
(lldb) register read rdi rsi Copy code
レジスタの読み取りrdi
with rsi
データ
(lldb) register write rsi 0x0 Copy code
設定レジスタrsi
データは0x0です
(lldb) disassemble Copy code
現在の一時停止方法を表示する組み立て手順
(lldb) disassemble -n '-[UIViewController setTitle:]' Copy code
OC [UIViewController setTitle:]
メソッドを分析する
(lldb) disassemble -a 0x000000010b8d972d Copy code
アドレスを含むメソッドを解析します0x000000010b8d972d
モジュール(モジュール)
(lldb) image list Copy code
現在のプロセスでロードされているすべてのモジュールに関する情報を一覧表示します
(lldb) image list -b Copy code
現在のプロセスでロードされているすべてのモジュールの名前を一覧表示します
(lldb) process load /Path/To/Module.framework/Module Copy code
現在のプロセスでローカルモジュールをロードします