簡(jiǎn)介
LLDB是個(gè)開(kāi)源的內(nèi)置于XCode的調(diào)試工具白筹,給我們平時(shí)開(kāi)發(fā)調(diào)試帶來(lái)很大的便利料扰,同時(shí)它對(duì)我們逆向分析別人的APP同樣有很大的幫助邓萨。
LLDB的使用其實(shí)看LLDB官方文檔就可以了
這篇文章我就把常用的指令列舉出來(lái),方便日后查閱
斷點(diǎn)操作
【為C函數(shù)下斷點(diǎn)】
$b set -n "C函數(shù)名"
【為OC方法下斷點(diǎn)】
$b set -n "-[OC類 方法名:]"
【遍歷整個(gè)項(xiàng)目中须教,為所有同名的所有方法下斷點(diǎn)】
$b set -r 方法名:
【查看斷點(diǎn)列表】
$b list
【斷點(diǎn)禁用/啟用】
$breakpoint disable
$breakpoint enable
【繼續(xù)執(zhí)行】
$continue c
【單步運(yùn)行,將子函數(shù)當(dāng)做整體一步執(zhí)行】
$n next
$s
單步運(yùn)行,遇到子函數(shù)會(huì)進(jìn)去
【查看指令的用法】
$help [cmd]
【內(nèi)存訪問(wèn)斷點(diǎn)】
$watchpoint set variable p1->name
$watchpoint set expression 0x312315(一個(gè)內(nèi)存地址)
注:斷下之后可以通過(guò)bt查看堆棧信息煤率,達(dá)到了解是從哪修改了內(nèi)存
內(nèi)存操作
【查看當(dāng)前內(nèi)存/修改當(dāng)前內(nèi)存】
$expression self.view.subViews
$p self.view.subViews
$p self.view.backgroudColor = [UIColor redColor];
注意:
p是expression的縮寫仰冠,并不是print
po 的o是代表打印該類的description
【stop-hook - 讓你在每次stop的時(shí)候去執(zhí)行一些命令,只對(duì)breadpoint,watchpoint】
$target stop-hook list
$target stop-hook add -o "frame variable"
$target stop-hook delete
【查看代碼段】
$image lookup -a 0x102110226 //匯編的地址
$image lookup -t Person //快速查看一個(gè)類
$image list //系統(tǒng)加載的各種文件信息
【內(nèi)存查看】
$memory read 0x地址(縮寫是:x)
堆棧操作
【堆棧操作】
$bt //查看堆棧列表
$up //斷下后才可以使用 往函數(shù)上一層
$down //斷下后才可以使用 往函數(shù)下一層
$frame select index //定位到第index層的代碼位置
$frame variable 查看所有參數(shù),可以通過(guò)p進(jìn)行修改
$thread return 代碼回滾到上一層蝶糯,并退出