程式設計師每天接觸最多的就是物件(自己主動new的)和bug,而在開發中掌握一些除錯技巧是很有用的,今天工作中遇到了乙個bug搞得心好累,晚上就寫一點自己除錯中會用到的方法。
所以就先講乙個和編譯器有關的除錯技巧
一.lldb除錯命令
lldb
是llvm
下的偵錯程式,xcode從4.0開始編譯器開始改用llvm
,相應的偵錯程式也從gdb
改為lldb
。而從xcode5.0開始所有工程也被自動設定為使用lldb
(我是沒接觸過gdb
)我們可以通過一些lldb命令來幫助我們除錯。
首先怎麼除錯:在專案中打個斷點我們就可以看到:
在箭頭指向的位置我們看到了lldb,這樣我們就可以輸入指令:
po---最常用的,po是一般是輸出 objective-c 物件的,p是輸出基本型別的,但是我們發現其實都可以用。(注意輸出的資訊中帶有$1的字樣。實際上,我們每次查詢的結果會儲存在一些持續變數中($[0-9]+))這樣你可以在後面的查詢中直接使用這些值像這樣:(lldb)po $1
dongdong
expr---可以在除錯時動態執行指定表示式,並將結果列印出來。常用於在除錯過程中修改變數的值
call--即是呼叫的意思,如call age=18,也會改掉值
2.3使用效果如下圖,但是實際中我很少使用
4.bt------列印呼叫堆疊,加
all可列印所有
thread的堆疊
5.image-----
mage 命令可用於定址,有多個組合命令,如image lookup --address尋找棧位址對應的**位置
(當碰到給一堆堆疊錯誤時很有用)image lookup --type(找到匹配的型別,感覺多數情況下都沒用)
lldb命令還有很多,但是在ios開發中我常用的就這麼幾個,下面介紹一下lldb命令和斷點的一些使用
二。斷點
在斷點中我們可以進行一些編輯,從而讓其達到我們的需求,使用方法可以在斷點上雙擊進入第乙個選項,或者commond+option+單擊就可以進入編輯狀態
1.lldb命令和斷點的結合
當我們把底下的options打鉤時,意味著
執行到這個斷點的時,填充變數的值,然後繼續執行,並不在此處斷點進入除錯模式,我們看到輸出已經改變了
2.條件斷點
conditon中的意思是只有符合這個條件時斷點才有作用。
總結:斷點和lldb的知識其實很多,我們在開發中了解其常用的方法和合理使用會大大的促進我們的開發速度和提高效率。
gdb除錯的一些技巧
雖然list已經很方便了,但還是不盡人意.如果能夠在執行的同時顯示 就好了,答案是肯定的.使用如下命令啟動gdb gdb tui main或者在啟動gdb後,輸入命令focus或layout linux下,程式出現崩潰都會在可執行檔案的目錄生成core檔案,此時可以使用core檔案檢視崩潰時的呼叫堆...
Cocoa XCode的一些除錯技巧
xcode的一些除錯技巧 羅朝輝 本文遵循 署名 非商業用途 保持一致 創作公用協議 po 命令 為 print object 的縮寫,顯示物件的文字描述 顯示從物件的 description 訊息獲得的字串資訊 比如 上圖中,我使用 po 命令顯示乙個 nsdictionary 的內容。注意在左側...
Eclipse除錯Java的一些技巧
1 條件斷點 想象一下我們平時如何新增斷點,通常的做法是雙擊行號的左邊。在debug檢視中,breakpoint view將所有斷點都列出來,但是我們可以新增乙個boolean型別的條件來決定斷點是否被跳過。如果條件為真,在斷點處程式將停止,否則斷點被跳過,程式繼續執行。2 異常斷點 在斷點view...