在我的可可應用程序的加載過程中,我的程序因爲消息EXC_BAD_ACCESS而崩潰。堆棧跟蹤沒有幫助。任何線索我怎麼能找到問題?爲什麼我的可可程序在啓動過程中獲得EXC_BAD_ACCESS?
3
A
回答
5
我見過多次在那裏,當你試圖訪問一個對象,你沒有保留適當所以它要麼不指向你的對象或其指向的有效副本會發生這種情況另一種類型的對象早期放置斷點並分析對象的步驟通過啓動使用po和打印在gdb中是最好的選擇
-3
這是一個可能的原因。有一個IBOutlet對象沒有被初始化,並且在nil上調用了一條消息。堆棧跟蹤可能是這樣的:
#0 0x90a594c7 in objc_msgSend
#1 0xbffff7b8 in ??
#2 0x932899d8 in loadNib
#3 0x932893d9 in +[NSBundle(NSNibLoading) _loadNibFile:nameTable:withZone:ownerBundle:]
#4 0x9328903a in +[NSBundle(NSNibLoading) loadNibFile:externalNameTable:withZone:]
#5 0x93288f7c in +[NSBundle(NSNibLoading) loadNibNamed:owner:]
#6 0x93288cc3 in NSApplicationMain
#7 0x00009f80 in main at main.mm:17
由於堆棧跟蹤是沒有幫助的,你將不得不步代碼中查找錯誤。如果由於某種原因,您無法在執行早期設置斷點,請嘗試插入一些Debugger();調用將打破調試器。
0
補充:最重要的原因解除封存失敗是忘記「迴歸自我」;來自自定義類的-init。它傷害了很多:(
0
檢查控制檯日誌(Applications/Utilities/Console.app)當程序崩潰時啓動,並有一些錯誤的初始化,就經常寫一些有用的錯誤信息出現,它崩潰之前。
2
這通常表示內存管理錯誤。
確保所有出口報關單遵循最佳實踐:
@interface MyClass : MySuperclass {
UIClass *myOutlet;
}
@property (nonatomic, retain) IBOutlet UIClass *myOutlet;
@end
這種格式可以確保您有任何超在任何平臺上獲得的內存管理權。
檢查任何awakeFromNib
方法,以確保您不要過度釋放對象等
1
一個新的答案,一個古老的線程... XCode中4診斷EXC_BAD_ACCESS例外的最有效的方法是使用儀器分析您的應用程序(從XCode單擊產品/配置文件並選擇殭屍)。這將幫助您識別發送到釋放對象的消息。
相關問題
- 1. 爲什麼我會在NSTimer選擇器中獲得EXC_BAD_ACCESS?
- 2. 我可以在Windows XP中作爲服務啓動程序嗎?
- 3. 爲什麼我們在應用程序中獲得兩次currentsession?
- 4. 爲什麼我在本程序中獲得空指針異常?
- 5. 這個過程爲什麼不啓動?
- 6. 爲什麼我的程序在啓動之前崩潰?
- 7. 子過程無法捕獲STDOUT - 程序可能會做什麼?
- 8. 爲什麼在通過int投射後獲得EXC_BAD_ACCESS?
- 9. 如何獲得啓動我的應用程序的流程?
- 10. 爲什麼我會得到EXC_BAD_ACCESS?
- 11. 爲什麼在Linux驅動程序中使用udelay()不可靠?
- 12. 爲什麼我得到DeadlineExceededException:在我的web應用程序中?
- 13. 爲什麼PM2重新啓動我的過程?
- 14. 爲什麼我的程序在objc_msgSend()期間在_class_isInitialized()中接收到EXC_BAD_ACCESS?
- 15. 我可以從我的應用程序中啓動android應用程序嗎?
- 16. 爲什麼Openbox自動啓動不啓動某些程序?
- 17. 有什麼辦法可以獲得iPhone應用程序記錄
- 18. 爲什麼Qt中的MainWindow在啓動程序後關閉?
- 19. 爲什麼不jenkins啓動我的java程序?
- 20. 爲什麼我的android應用程序不能打開/啓動?
- 21. 爲什麼不是AVD啓動我的Android應用程序?
- 22. 爲什麼我的wxPerl應用程序無法啓動Windows?
- 23. 創建多窗口可可程序 - 啓動程序建議?
- 24. 爲什麼我在我的WPF應用程序中獲取System.Security.AccessControl.PrivilegeNotHeldException?
- 25. 爲什麼程序頭可執行?
- 26. 可可應用程序中的objc_msgSend()和EXC_BAD_ACCESS
- 27. EXC_BAD_ACCESS第二次啓動我的應用程序並調用reloadTable
- 28. 爲什麼我在下面的程序中得到UnsatisfiedLinkError?
- 29. 爲什麼我可以在單線程FLTK應用程序中死鎖?
- 30. 我可以在批准的應用程序中啓動可執行文件嗎?
消息到零在Objective-C中不是錯誤。 – mmalc 2008-10-16 15:14:35