簡述
LLDB是XCode下默認的調試工具,蘋果向來都會把界面做得很好,XCode中的lldb也不例外:無縫集成,方便簡單。 嗯,casa是命令行控,也不喜歡簡單玩法,所以這篇文章要講的是用命令行LLDB來調試C程序。 LLDB和GDB有很多相似之處,如果你GDB玩得比較熟,那麼相信你LLDB一會兒就能上手了。閱讀這篇文章不需要有GDB的基礎。 系好安全帶,打起精神,我們開始了。
如果你是因為不知道怎麼退出lldb才搜到這篇文章的, 直接告訴你退出命令就是quit, 你可以關網頁去愉快地玩耍啦。
准備工作
1. 安裝lldb
Ubuntu用戶:
Mac用戶:
Windows用戶:
2. 寫一段C程序,記得編譯成可執行文件
程序自己隨便寫一個就好了,來個if-else判斷, 然後有一個隨便你做什麼的子函數,然後輸出個helloworld就好。編譯時記得帶-g參數,這樣編譯器就能在編譯時候提供調試時所需要的一些信息。
lldb調試之旅
進入調試狀態
1. 調試可執行文件
2. 調試運行時帶參數的可執行文件
如果運行這個程序時是要帶參數的,那麼就這樣:
3. 調試某個正在運行中的進程
看代碼
進入到調試狀態之後, lldb和gdb一樣,也給了你看代碼的命令: list或l, 但只有在編譯時候帶-g才能看哦
1. 使用list看代碼
tips:
不輸入命令的時候直接按回車,就會執行上一次執行的命令。
一直list到底了之後再list就沒有了,這時候怎麼辦?list 1就回到第一行了。l 13就是從第13行開始往下看10行。
2. 看其他文件的代碼
如果你的這個程序編譯的時候是由很多文件組成的,那麼就可以使用list 文件名看其他文件的代碼, 以後再執行list 3的時候,看的就是你前面設置的文件名的第三行
3. 看某個函數的代碼
下斷點
我們把調試器掛上程序了,也看到代碼了,接下來就是找一個地方下斷點,然後讓程序跑起來,看看這裡面到底發生了些什麼~o
1. 根據文件名和行號下斷點
2. 根據函數名下斷點
3. 根據某個函數調用語句下斷點(Objective-C比較有用)
4. 一個小技巧
你可以通過設置命令的別名來簡化上面的命令
5. 查看斷點列表、啟用/禁用斷點、刪除斷點
運行環境操作
1. 啟動
OK, 我們前面已經下好斷點了,現在就要啟動這個程序了!前面留了一個斷點是斷在main函數的哈。
2. 下一步、步入、步出、繼續執行
3. 查看變量、跳幀查看變量
結束
這只是這篇文章結束了,還有watchpoints這一門沒有寫。不過這篇文章裡面的東西知道了以後,調試個程序問題就不大。 想要進階的同學可以去看官方tutorial。