日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Xcode调试命令大全 (LLDB Cheatsheet)

發布時間:2024/4/14 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Xcode调试命令大全 (LLDB Cheatsheet) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這是一個LLDB的常用命令表, 涵蓋了平時Debug時用到的所有命令,在開發中能夠幫助你更快的定位和調試bug

Getting help(獲取幫助)

(lldb) help 復制代碼

列出所有的命令和別名

(lldb) help po 復制代碼

獲取po命令的幫助文檔

(lldb) help break set 復制代碼

獲取break set子命令的幫助文檔

(lldb) apropos step-in 復制代碼

搜索幫助文檔中包含了step-in的命令

Finding Code(搜索代碼)

(lldb) image lookup -rn UIAlertController 復制代碼

查看所有包含了UIAlertController并且被編譯或運行的代碼

(lldb) image lookup -rn (?i)hosturl 復制代碼

查看所有包含了hosturl的代碼,并且不區分大小寫

(lldb) image lookup -rn 'UIViewController\ set\w+:\]' 復制代碼

查看UIViewController中被實現或是重寫所有的屬性的setter方法

(lldb) image lookup -rn . Security 復制代碼

查看所有位于Security模塊的代碼

(lldb) image lookup -s mmap 復制代碼

查看標識為mmap的代碼

Breakpoints(斷點)

(lldb) b viewDidLoad 復制代碼

創建一個斷點,斷在所有的viewDidLoad方法中(Swift/Objective-c都有)

(lldb) b setAlpha: 復制代碼

在oc的setAlpha:方法或是oc的alpha屬性的setter方法中創建一個斷點

(lldb) b -[CustomeViewControllerSubclass viewDidLoad] 復制代碼

在OC的[CustomeViewControllerSubclass viewDidLoad]中設置一個斷點

(lldb) rbreak CustomViewControllerSubclass.viewDidLoad 復制代碼

創建一個正則斷點,匹配OC和Swift中類CustomViewControllerSubclass的viewDidLoad方法,包括OC中的[CustomeViewControllerSubclass.viewDidLoad]或是Swfit中的ModuleName.CustomeViewControllerSubclass.viewDidLoad() -> ().

(lldb) breakpoint delete 復制代碼

刪除所有的斷點

(lldb) breakpoint delete 2 復制代碼

刪除id為2的斷點

(lldb) breakpoint list 復制代碼

列出所有的斷點及其id

(lldb) rbreak viewDid 復制代碼

創建一個正則斷點匹配.*viewDid.*

(lldb) rbreak viewDid -s SwiftRadio 復制代碼

在模塊SwfitRadio中創建一個正則斷點匹配.*viewDid.*,

(lldb) rbreak viewDid(Appear|Disappear) -s SwiftHN 復制代碼

在Swift模塊的viewDidAppear和viewDidDisappera中創建一個斷點

(lldb) rb "\-\[UIViewController\ set" -s UIKit 復制代碼

在UIKit模塊中創建一個斷點,斷在OC中所有包含了[UIViewController set的方法里

(lldb) rb . -s SwiftHN -o 復制代碼

在SwiftHN模塊中的所有方法中創建斷點, 但是只要有一個斷點被觸發,就刪除所有的斷點

(lldb) rb . -f ViewController.m 復制代碼

創建一個斷點,斷在ViewController.m中的所有方法里面

Expressions(表達式)

(lldb) po "hello, debugger" 復制代碼

打印hello, debugger

(lldb) expression -lobjc -O -- [UIApplication sharedApplication] 復制代碼

打印UIApplication的實例在OC環境下

(lldb) expression -lswift -O -- UIApplication.shared 復制代碼

打印UIApplication的實例在Swift環境下

(lldb) b getenv (lldb) expression -i0 -- getenv("HOME") 復制代碼

創建一個斷點在getenv, 然后執行getenv方法。程序將會斷在getenv方法執行的地方

(lldb) expression -u0 -O -- [UIApplication test] 復制代碼

執行方法[UIApplication test],如果此方法導致了應用崩潰了,不展開調用棧

(lldb) expression -p -- NSString *globalString = [NSString stringWithUTF8String: "Hello, Debugger"]; (lldb) po globalString Hello, Debugger 復制代碼

聲明一個全局的字符串變量globalString

(lldb) expression -g -O -lobjc -- [NSObject new] 復制代碼

解析[NSObject new]在OC中的表達

Stepping(步進)

(lldb) thread return false 復制代碼

在當前代碼提前返回 false

(lldb) thread step-in 復制代碼

執行下一行代碼

(lldb) thread step-over 復制代碼

執行下一個方法

(lldb) thread step-out 復制代碼

步出當前方法

(lldb) thread step-inst 復制代碼

如果執行一個方法就步進,否者就進入命令集

GDB formatting (GDB調試器格式化)

(lldb) p/x 128 復制代碼

輸出數據的16進制格式

(lldb) p/d 128 復制代碼

輸出數據的10進制格式

(lldb) p/t 128 復制代碼

輸出數據的2進制格式

(lldb) p/a 128 復制代碼

將數據作為地址輸出

(lldb) x/gx 0x000000010fff6c40 復制代碼

從地址0x000000010fff6c40中獲取數據并以8字節顯示

(lldb) x/wx 0x000000010fff6c40 復制代碼

從地址0x000000010fff6c40中獲取數據并以4字節顯示

Memory (內存)

(lldb) memory read 0x000000010fff6c40 復制代碼

讀取地址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 復制代碼

從遠程文件中獲取一個實例,然后寫入到你電腦中的/tmp/file中去

Registers & assembly (寄存器和匯編)

(lldb) register read -a 復制代碼

顯示系統中所有的寄存器

(lldb) register read rdi rsi 復制代碼

讀取寄存器rdi和rsi的數據

(lldb) register write rsi 0x0 復制代碼

設置寄存器rsi的數據為 0x0

(lldb) disassemble 復制代碼

顯示你當前的暫停方法的匯編指令

(lldb) disassemble -n '-[UIViewController setTitle:]' 復制代碼

解析OC中的[UIViewController setTitle:]方法

(lldb) disassemble -a 0x000000010b8d972d 復制代碼

解析一個方法,此方法包含地址0x000000010b8d972d

Modules (模塊)

(lldb) image list 復制代碼

列出當前進程中加載的所有模塊的信息

(lldb) image list -b 復制代碼

列出當前進程中加載的所有模塊的名字

(lldb) process load /Path/To/Module.framework/Module 復制代碼

在當前進程中加載本地模塊

總結

以上是生活随笔為你收集整理的Xcode调试命令大全 (LLDB Cheatsheet)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。