這是我的個(gè)人博客主頁(可能要翻墻),最新的文章我會(huì)發(fā)布到個(gè)人博客,簡書可能稍有延遲,這是我的Github主頁
正文
LLDB是和GDB類似的命令行調(diào)試工具,許多命令和GDB一樣,為Xcode提供底層調(diào)試環(huán)境
LLDB開始于Xcode5
我們可以使用命令別名功能來自定義LLDB,也可以通過Python腳本和Python-LLDB對(duì)象庫來擴(kuò)展LLDB
LLDB還可以在系統(tǒng)終端通過命令行來使用,對(duì)于非圖形窗口編碼的人來說比較重要
-
LLDB的語法大致如下(其實(shí)很多都和命令行挺類似的,這里為了整體,多描述一下):
<command> [<subcommand> [<subcommand>...]] <action> [-options [option-value]] [argument [argument...]]command和subcommand是LLDB的調(diào)試對(duì)象,Command為Subcommand提供了上下文環(huán)境,action是在上下文中的想要執(zhí)行的動(dòng)作,option通常是一個(gè)值用于確定action具體操作,argument是我們傳入的參數(shù),上面幾個(gè)要素之間通過空格隔開,如果參數(shù)中有控制,那么要用引號(hào)或雙引號(hào)來保護(hù),如下:
(lldb) command [subcommand] -option "some \"quoted\" string" 或 (lldb) command [subcommand] -option 'some "quoted" string'打斷點(diǎn)例子:
(lldb) breakpoint set --file test.c --line 12 -
option可以有多個(gè)而且不分先后,還可以有縮寫和完整命令,如下:
breakpoint set -M <method> ( --method <method> )-表示縮寫,--表示完整命令 元命令(Raw Commands),元命令是當(dāng)我們吧所有option去掉之后,剩余的命令字符串會(huì)不經(jīng)過解析直接傳遞給命令;元命令對(duì)于一些復(fù)雜表示的參數(shù)很有用
LLDB在Xcode中或在終端中支持tab補(bǔ)全
-
命令別名(Command Aliases):用于自定義一些平時(shí)常用的語句,讓我們?cè)俅握{(diào)試的時(shí)候可以簡短方便,如下:
(lldb) breakpoint set --file foo.c --line 12 我們可以定義Command Aliases,%1及%2和shell一樣,用于獲取第一第二個(gè)參數(shù): (lldb) command alias bfl breakpoint set -f %1 -l %2 后續(xù)操作的時(shí)候,我們可以這樣用: (lldb) bfl foo.c 12開發(fā)人員為LLDB提供了少數(shù)別名命令,比如
step、next等;開發(fā)者可以通過~/.lldbinit文件來定義這些命令,LLDB會(huì)自動(dòng)去讀取,我們也可以通過help -a來查看當(dāng)前所有的別名命令
我們還可以通過快捷方式來解綁和綁定命令與命令別名,如:(lldb) command unalias b // 解綁 (lldb) command alias b breakpoint // 綁定 幫助系統(tǒng):和bash一樣,可以通過
help來查看LLDB的命令、子命令、選項(xiàng)等的幫助文檔,格式如help <command> <subcommand> [<subcommand>…];使用help可以查看命令的別名,如:help breakpoint=help b;通過(lldb) help <breakpt-id>查看參數(shù)的文檔