我怎麼能在Objective-C調試應用程序的iPhone時,Xcode如何調試iPhone應用程序
我的意思是好的,Xcode和調試模式是好的,但是當 BAD_ACCES我的應用程序崩潰(或不便。smilliar)我只是得到了跟蹤到程序集
當我調試C + +和可以說要訪問一個無效的指針,我得到的一行代碼的地方一切都崩潰的跟蹤...在這裏我只是得到一個跟蹤許多內部功能在組裝,所以我沒有線索什麼,哪裏出了問題
可能有些釋放/保留問題lem,但我怎麼知道?
謝謝
我怎麼能在Objective-C調試應用程序的iPhone時,Xcode如何調試iPhone應用程序
我的意思是好的,Xcode和調試模式是好的,但是當 BAD_ACCES我的應用程序崩潰(或不便。smilliar)我只是得到了跟蹤到程序集
當我調試C + +和可以說要訪問一個無效的指針,我得到的一行代碼的地方一切都崩潰的跟蹤...在這裏我只是得到一個跟蹤許多內部功能在組裝,所以我沒有線索什麼,哪裏出了問題
可能有些釋放/保留問題lem,但我怎麼知道?
謝謝
您使用的是XCode 3嗎?如果是這樣,我會強烈建議升級到XCode 4.XCode 4中的調試器相比之下非常出色。讓我們回過頭來看看導致崩潰的原因。
在這裏,我們一起去了完整的答案:
我看了一下您的應用程序,我認爲這是與UINavigationController的在兩個地方相結合,異步HTTP加載的問題。啓用殭屍確實揭示了這兩個錯誤。我第一次能夠重現,第二次彈出幾次,然後不再。
*** -[DetailViewController respondsToSelector:]: message sent to deallocated instance 0x56d6030
*** -[SearchViewController respondsToSelector:]: message sent to deallocated instance 0x56daa10
我剛剛限制了我的帶寬,看看這些錯誤是否連接到http請求。查看[限制Mac上的帶寬] [1]以設置慢速連接。我將它設置爲5KBytes /秒。
如果您非常快速地查看詳細信息,然後再次查看兩個級別,並將其作爲觸發錯誤的最後一個操作,則會發生第一個錯誤:單擊搜索。堆棧跟蹤顯示一個
#2 0x004545b8 in -[UIWebView webView:decidePolicyForMIMEType:request:frame:decisionListener:]
並且有一些線程打開,所以看下拉列表中有一個webThread。顯示該線程揭示了web視圖加載detailPages url的過程。這暗示webiew實際上完成了一個單獨的線程加載,並且無法連接回webview本身[DetailViewController respondsToSelector:]
。這很容易證明:刪除webview請求的加載:我無法重現錯誤。
解決方案問題1 這個問題很容易解決,因爲webview並未在dealloc中發佈。也建議將代表設置爲無對象,但在這種情況下不需要。
- (void)dealloc {
webView.delegate = nil;
[webView release];
}
第二誤差
棧跟蹤示出了
CLLocationManager onClientEventLocation:
解錯誤
同誤差1,設置代表爲nil並釋放的LocationManager。
當您的應用程序崩潰時,您無法在左側窗口中打開調試器,您可以看到堆棧跟蹤。你可以雙擊任何會跳到你的代碼中正確位置的行(如果被調用的方法是你的)。
轉到項目 - >編輯活動Executable->參數選項卡 通過點擊+
Name:NSZombieEnabled
Value:YES
這將嘗試解決內存地址爲壞過剩錯誤的類名添加變量在下面的窗口。
要了解內存泄漏情況,請打開Run-> Run with performance tool-> Leaks。這將打開儀器,這是一個明智的工具,發現泄漏。
是的,但在堆棧跟蹤中,我收到了一堆內部電話,而我自己也沒有 – 2011-04-08 09:25:29
您可以發佈stacktrace的屏幕截圖嗎?可能有線索,是的,不是每一行都可以跳到你的代碼,因爲它是Apple的代碼,並且沒有打開。 – 2011-04-08 09:26:55
這是http://img69.imageshack.us/i/debugb.png/ – 2011-04-08 17:38:33
您是否嘗試過構建和分析?雖然它不是實時調試,但它應該可以幫助您找到泄漏和釋放的途徑。 – Twelve47 2011-04-08 09:22:22