**:
分類: ios
2012-04-14 21:52
765人閱讀收藏
舉報(lldb)po $eax
(unsigned int) $1 = 112518480 receiver () has no segue with identifier 'modalsegue'
一上來就看到這兩行東西,是不是覺得有點用,但又莫名其妙呢
與偵錯程式交朋友
****** friends with the debugger
對於最近的這個crash點,**如下:
[self performseguewithidentifier:
@"modalsegue" sender:sender];
在除錯窗格中沒有任何訊息。您可以像以前那樣,按繼續執行程式「按鈕,但你也可以在偵錯程式中鍵入乙個命令來得到錯誤資訊。這樣做的好處是可以留在同乙個地方暫停應用程式。
如果你執行這個模擬器,你可以(lldb)提示符後鍵入以下內容:
(lldb)po $eaxlldb is the default debugger for xcode 4.3 and up.
如果你使用的是舊版本的xcode,那麼你有gdb偵錯程式(這對linux開發人員而言,很熟悉的)。他們採用同樣的一些基本的命令,所以,如果您的xcode提示說(gdb),而不是(lldb),你應該仍然能夠按照這個命令沒有問題。 (順便說一下,你可以切換在xcode編輯器之間的不同除錯,可以通過project schema編輯選項,選擇debugger,來個本地的圖更能說明問題:)
po命令代表「列印物件」 print object(會不會讓你想起.net clr debug中的 !do !pe=print exception)。符號$ eax是指cpu暫存器之一。在異常的情況下,該暫存器將包含乙個指標的n***ception物件。注:$eax只適用於模擬器,如果你在除錯裝置,你需要使用暫存器$ r0。
例如,如果鍵入:
(lldb)po[$eax class]你也可以看到如下的輸出
(id)$2 = 0x01446e84 n***ception數字並不重要,但很明顯,你在這裡處理與n***ception物件。
你可以呼叫這個物件的任何從n***ception方法。例如:
(lldb)po[$eax name]這會給你異常的名稱,在這種情況下nsinvalidargumentexception,
(lldb)po[$eax reason]這會給你 error message:
(unsigned int)$4 = 114784400 receiver(<mainviewcontroller: 0x6b60620>)has nonote:when you just do 「po $eax」, it will call the 「description」 method on the object and print that, which in this case also gives you the error message.segue with identifier 'modalsegue'
這樣解釋這是怎麼回事:你試圖執行名為「modalsegue」的
segue ,但顯然在mainviewcontroller沒有segue公司。
storyboard並不表明segue公司是乙個存在,是你忘了設定其識別符號,這是乙個非典型的錯誤(往往是你拼寫錯了):
改變segue的識別符號「modalsegue。」再次執行程式, - 等待 - 點選按鈕。哇,這次沒有再的崩潰!但這裡是我們的下乙個部分問題 - 我們認為顯示表不應該是空的!
why?
譯者按慣例總結一下:
1. 適用storayboard後,要特別注意其中的設定
2. 了解gdb/lldb除錯命令真的是又幫助的(當然了解windows debugger也有幫助:))
這裡還有一些:
如何解決藍屏問題
第一步 公升級筆記本bios 一般說來筆記本在出廠的時候很可能設計上存在某些的瑕疵,而廠商通常會採用公升級bios的方法來解決這些bug。如果我們在使用筆記本腦的過程中遇到了藍屏的情況,那麼我們可以採取公升級bios的辦法來解決藍屏的故障。第二步 正確安裝硬體驅動 在重新整理了bios以後,部分筆記...
如何解決fpga high fanout問題
fanout,即扇出,指模組直接呼叫的下級模組的個數,如果這個數值過大的話,在fpga直接表現為net delay較大,不利於時序收斂。因此,在寫 時應盡量避免高扇出的情況。但是,在某些特殊情況下,受到整體結構設計的需要或者無法修改 的限制,則需要通過其它優化手段解決高扇出帶來的問題。以下就介紹三個...
如何解決fpga high fanout問題
fanout,即扇出,指模組直接呼叫的下級模組的個數,如果這個數值過大的話,在fpga直接表現為net delay較大,不利於時序收斂。因此,在寫 時應盡量避免高扇出的情況。但是,在某些特殊情況下,受到整體結構設計的需要或者無法修改 的限制,則需要通過其它優化手段解決高扇出帶來的問題。以下就介紹三個...