2010-02-04 32 views
3

iPhone sdk 3.1.2,xcode 3.1.4,mac os x 10.5.8,iPhone OCUnit,用代碼139異常退出,它是什麼?

我是新手,使用OCUnit自帶iphone sdk。唯一的錯誤我得到的是:

錯誤:試驗檯「/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.1.2.sdk/Developer/usr/bin/otest」與碼139存在異常(它可能已經崩潰)。

有人知道它是什麼嗎?謝謝。

編輯:我找到了原因。我在我正在編寫單元測試的類的-dealloc中放置了非常愚蠢的代碼。就像這樣:

- (void)dealloc { 
    [someObject1 dealloc]; //wtf, dealloc? 
    [someObject2 dealloc]; //wtf, dealloc? 
    [super dealloc]; 
} 

,有時候這會導致代碼139,有時138

+0

由於代碼139是一個通用的「AGH SOMETHING WENT WRONG」代碼,您能否在您的測試中隔離它是否崩潰併發布相關代碼? – 2010-02-04 14:53:50

+0

謝謝戴夫。我在哪裏可以找到關於這些代碼的更多信息?我GOOGLE了「iPhone代碼139」,最頂端的鏈接是我的問題。 :) – yehnan 2010-02-05 03:22:01

回答

3

當我已經看到了這一點,它通常意味着我的單元測試,一旦有錯誤的邏輯,並已造成otest崩潰。這不是一個非常有用的答案,因爲代碼139不是非常有用的錯誤代碼。抱歉!

+0

不好意思。你是什​​麼意思是一個「錯誤的邏輯」? – yehnan 2010-02-04 07:12:09

+0

@yehnan - 像過度釋放對象並導致崩潰,解除引用空指針等。 – 2010-02-04 14:53:16

+0

謝謝,如你所說。 – yehnan 2010-02-05 03:19:59

1

當OCUnit與代碼139崩潰時,它確實可能是任何東西。通常會出現此錯誤代碼,因爲它是運行時錯誤,而不是編譯時錯誤。所以,你正在做的事情,編譯器很好,但在運行時失敗。

以下是在發生這種情況時需要注意的一些事情,但它確實可能比這更復雜。
1.檢查你的dealloc/alloc區域,確保這些對象確實存在/被正確調用。
2.檢查你的拼寫,拼寫錯誤等...(兩個變量同名,但錯誤地使用?鑄造?)
3.試着隔離你的測試,意思是,通過你的測試,找出哪一個失敗。由於代碼存在問題,OCUnit崩潰。
4.如果所有其他都失敗,讓代碼以模擬器而不是OCUnit爲目標,則應該以這種方式獲得更有意義的鬆弛跟蹤。