我有一個應用程序,它定期觸發一個「集合被枚舉時發生了變化」。例外。異常的頻率似乎因設備而異。查找__NSFastEnumerationMutationHandler調用者
我對所有引發的異常都設置了斷點,但在引發異常時,我得到的唯一堆棧是__NSFastEnumerationMutationHandler和它調用的彙編代碼。我得到了正在修改的__NSArrayM的內存地址,但我無法弄清楚如何將其反向工程到數組的名稱或內容中。在lldb中鍵入image lookup --address 0x20087d10
(打印異常的地址)不會輸出。 $r0
給我的例外對象,但po [$r0 callStackSymbols]
和po [$r0 callStackReturnAddresses]
返回零。
我也不知道如何確定哪一段代碼觸發它;應用程序線程在遇到異常斷點時的內容因事件而異,並且不包括對集合對象的任何明顯訪問。
如何確定哪個集合正在發生突變並觸發此異常?
順便提一下,爲好奇,事故的原因錯誤在於我註冊並不必要地刪除了一個NSURLProtocol子類,而當我在網頁請求觸發CoreFoundation搜索匹配協議時碰巧這樣做時,它導致了此異常。 – Arkaaito