2011-08-28 51 views
0

我的應用程序在運行時在各個點崩潰,並在代碼中的同一點產生以下錯誤。我的研究表明這是一個記憶問題,但我不知道爲什麼。我不是一個應用程序開發人員(而不是Web開發人員),他對Objective-C有很好的理解。我也沒有構建這個應用程序(長話)。在xcode中引發EXC_BAD_ACCESS錯誤

#import <UIKit/UIKit.h> 

int main(int argc, char *argv[]) 
{ 
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
    int retVal = UIApplicationMain(argc, argv, nil, nil);  //Crashes with EXC_BAD_ACCESS 
    [pool release]; 
    return retVal; 
} 

我知道這是不知道該應用程序的其餘部分可能是艱難的,但任何人都可以點我在正確的方向,以什麼可能導致此,或如何我可以開始調試呢?

注意:應用程序沒有拋出此錯誤,直到我修復了一些內存泄漏問題。不知道這是否有幫助。

+0

檢查您的發佈呼叫。問題在於他們!嘗試評論所有,並逐一取消註釋或使用NSZombie類 – Nekto

回答

3

正確的方向是使用儀器(在/ Developer/Applications文件夾中附帶Xcode)。如果這是一個EXC_BAD_ACCESS,你最好的選擇是殭屍工具。

0

根據您使用的是Xcode 4還是早期版本,在How to enable NSZombie in Xcode?找到答案可能會有所幫助;在你的問題中,錯誤被報告在最高層,因此你認爲這對告訴錯誤來源並不是特別有用。

我可以爲您提供的兩分錢反饋意見是,我第一次嘗試使用靜態分析器時遇到過類似的問題;在報告之後,我試圖修復潛在的泄漏,實際上導致資源被提前釋放。該工具是有幫助的,但它需要更多的時間來掌握,而不是一開始就看起來。它看起來像是一個按鈕,但並不完全如此,因爲當嘗試修復解決方案不適用時,它也可能看起來合適(如果超出了分析的能力,做出更「微妙」的錯誤;)) 。

+0

您不必啓用NSZombie。只需使用Zombies樂器運行樂器中的應用程序,就可以在DTrace周圍使用非常全面的GUI包裝。 –