XCode的一些調試技巧

來源:互聯網
上載者:User

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 處設定斷點之後,程式就能在該代碼處中斷了,我們從而知道代碼在什麼地方出問題了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.