使用LLDB調(diào)試程序
http://www.cocoachina.com/ios/20150819/11558.html
簡述
LLDB是XCode下默認(rèn)的調(diào)試工具,蘋果向來都會把界面做得很好牛欢,XCode中的lldb也不例外:無縫集成,方便簡單学辱。 嗯,casa是命令行控晒骇,也不喜歡簡單玩法锋八,所以這篇文章要講的是用命令行LLDB來調(diào)試C程序。 LLDB和GDB有很多相似之處芹助,如果你GDB玩得比較熟堂湖,那么相信你LLDB一會兒就能上手了。閱讀這篇文章不需要有GDB的基礎(chǔ)状土。 系好安全帶无蜂,打起精神,我們開始了蒙谓。
如果你是因為不知道怎么退出lldb才搜到這篇文章的, 直接告訴你退出命令就是quit, 你可以關(guān)網(wǎng)頁去愉快地玩耍啦斥季。
準(zhǔn)備工作
1. 安裝lldb
Ubuntu用戶:

Mac用戶:

Windows用戶:

2. 寫一段C程序,記得編譯成可執(zhí)行文件
程序自己隨便寫一個就好了累驮,來個if-else判斷, 然后有一個隨便你做什么的子函數(shù)酣倾,然后輸出個helloworld就好。編譯時記得帶-g參數(shù),這樣編譯器就能在編譯時候提供調(diào)試時所需要的一些信息慰照。
lldb調(diào)試之旅
進(jìn)入調(diào)試狀態(tài)
1. 調(diào)試可執(zhí)行文件

2. 調(diào)試運(yùn)行時帶參數(shù)的可執(zhí)行文件
如果運(yùn)行這個程序時是要帶參數(shù)的灶挟,那么就這樣:

3. 調(diào)試某個正在運(yùn)行中的進(jìn)程

看代碼
進(jìn)入到調(diào)試狀態(tài)之后, lldb和gdb一樣,也給了你看代碼的命令: list或l, 但只有在編譯時候帶-g才能看哦
1. 使用list看代碼

tips:
不輸入命令的時候直接按回車毒租,就會執(zhí)行上一次執(zhí)行的命令稚铣。
一直list到底了之后再list就沒有了,這時候怎么辦墅垮?list 1就回到第一行了惕医。l 13就是從第13行開始往下看10行。
2. 看其他文件的代碼
如果你的這個程序編譯的時候是由很多文件組成的算色,那么就可以使用list 文件名看其他文件的代碼, 以后再執(zhí)行l(wèi)ist 3的時候抬伺,看的就是你前面設(shè)置的文件名的第三行

3. 看某個函數(shù)的代碼

下斷點
我們把調(diào)試器掛上程序了,也看到代碼了灾梦,接下來就是找一個地方下斷點峡钓,然后讓程序跑起來,看看這里面到底發(fā)生了些什么~o
1. 根據(jù)文件名和行號下斷點

2. 根據(jù)函數(shù)名下斷點

3. 根據(jù)某個函數(shù)調(diào)用語句下斷點(Objective-C比較有用)

4. 一個小技巧
你可以通過設(shè)置命令的別名來簡化上面的命令

5. 查看斷點列表若河、啟用/禁用斷點能岩、刪除斷點

運(yùn)行環(huán)境操作
1. 啟動
OK, 我們前面已經(jīng)下好斷點了,現(xiàn)在就要啟動這個程序了萧福!前面留了一個斷點是斷在main函數(shù)的哈拉鹃。

2. 下一步、步入、步出膏燕、繼續(xù)執(zhí)行

<span style="line-height: 1.8;">3. 查看變量钥屈、跳幀查看變量</span>

結(jié)束
這只是這篇文章結(jié)束了,還有watchpoints這一門沒有寫坝辫。不過這篇文章里面的東西知道了以后篷就,調(diào)試個程序問題就不大。 想要進(jìn)階的同學(xué)可以去看官方tutorial阀溶。