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

現在のプロセスでローカルモジュールをロードします