po 命令:為 print object 的縮寫,顯示對象的文本描述顯示從對象的 description 訊息獲得的字串資訊)。
比如:
中,我使用 po 命令顯示一個 NSDictionary 的內容。注意在左側我們可以看到 dict 的一些資訊:3 key/value pairs,顯示該 dict 包含的資料量,而展開的資訊顯示 isa 層次體系即class 和 metaclass結構關係)。我們可以右擊左側的 dict,選中“Print Description of "dict"”,則可以在控制台輸出 dict 的詳細資料:
view plaincopyprint?
print 命令:有點類似于格式化輸出,可以輸出對象的不同資訊:
如:
[cpp] view plaincopyprint?
註:4是 NSUTF8StringEncoding 的值。
info 命令:我們可以查看記憶體位址所在資訊
比如 "info symbol 記憶體位址" 可以擷取記憶體位址所在的 symbol 相關資訊:
[cpp] view plaincopyprint?
比如 "info line *記憶體位址" 可以擷取記憶體位址所在的程式碼相關資訊:
[cpp] view plaincopyprint?
show 命令:顯示 GDB 相關的資訊。如:show version 顯示GDB版本資訊
[cpp] view plaincopyprint?
help 命令:如果忘記某條命令的文法了,可以使用 help 命令名 來擷取協助資訊。如:help info 顯示 info 命令的用法。
[cpp] view plaincopyprint?
在系統拋出異常處設定斷點
有時候我們的程式不知道跑到哪個地方就 crash 了,而 crash 又很難重現。保守的做法是在系統拋出異常之前設定斷點,具體來說是在 objc_exception_throw處設定斷點。設定步驟為:首先在 XCode 按 CMD + 6,進入斷點管理視窗;然後點擊右下方的 +,增加新的 Symbolic Breakpoint,在 Symbol 一欄輸入:objc_exception_throw,然後點擊 done,完成。 這樣在 Debug 模式下,如果程式即將拋出異常,就能在拋出異常處中斷了。比如在前面的代碼中,我讓 [firstObjctcrashTest]; 拋出異常。在 objc_exception_throw 處設定斷點之後,程式就能在該代碼處中斷了,我們從而知道代碼在什麼地方出問題了。