我有一個ios電子郵件應用程序,一切運行良好,除了一個特定的用戶帳戶信息我得到崩潰相關的看起來像一個overreleased對象。NSZombies未啓用時崩潰,啓用時工作
問題是,如果我啓用NSZombies(或使用儀器)崩潰不會發生。每當NSZombies被禁用時,它會發生,但是當我想看看應用程序按預期發佈的內容時。
所以我的問題是,如果啓用殭屍阻止它發生,我該如何追蹤這個?此外,殭屍究竟做了什麼來防止崩潰,是否掛在對象上來監視它?
我有一個ios電子郵件應用程序,一切運行良好,除了一個特定的用戶帳戶信息我得到崩潰相關的看起來像一個overreleased對象。NSZombies未啓用時崩潰,啓用時工作
問題是,如果我啓用NSZombies(或使用儀器)崩潰不會發生。每當NSZombies被禁用時,它會發生,但是當我想看看應用程序按預期發佈的內容時。
所以我的問題是,如果啓用殭屍阻止它發生,我該如何追蹤這個?此外,殭屍究竟做了什麼來防止崩潰,是否掛在對象上來監視它?
所以我的問題是,如果啓用殭屍可以防止它發生,我該如何跟蹤它?
如果可能的話,少用-autorelease
s。
你可能會考慮Malloc Stack Logging來縮小分配範圍或調用網站的範圍。
創建本地自動釋放池也可以幫助您確定範圍。
有時,Memory Scribbling或Guard Malloc可以提供幫助。
只需在Sim/Device上運行就可以產生差異 - 甚至是不同的設備型號。
消除所有其他內存問題(例如泄漏,循環引用)也可以幫助您更接近識別此問題。
您也可以考慮檢查地址,如果它是帶標記的指針。
即使在更多地方引入消息傳遞功能也有助於縮小範圍。 是一個殭屍,[obj self]
將是一個錯誤。
殭屍究竟做了什麼來防止崩潰,它掛在物體上以監視它嗎?
是。對象的-dealloc
將照常進行調用,但是(通常)分配所使用的內存將不會返回,並且該實例將變爲殭屍 - 如果發生消息,則會生成運行時錯誤。
您是否添加了「所有異常」斷點?這可能會幫助你追蹤崩潰。 – rckoenes