2015-10-03 32 views
1

有沒有什麼方法可以檢測到以下情況:據我所知,在不好的地方覆蓋內存?或者任何其他嘗試爲NSString或類似的東西設置NSDictionary?使用XCode檢測內存覆蓋

int a[6]; a[6] = 8

也只是以確保我在我的應用得到了很多EXC_BAD_ACCESS KERN_INVALID_ADDRESS的,從我見過這些都是由內存引起的覆蓋。有沒有其他的方式來調試這種崩潰,因爲它們不會發生在我的設備/模擬器上,而是發生在某些我無法複製的情況下的用戶。

+0

嗯,你可以用-Weverything -Werror編譯或至少-Wall -Werror。然後你可以試試靜態分析器。然後是全新的地址清潔劑。給那些嘗試:)(或使用Swift:D) – HAS

回答

1

有!

查看Xcode方案編輯器的選項窗格。你可以啓用malloc scribble,這會有所幫助。但是,你可能想要的是守衛頁面。基本上,它在分配的開始或結束時創建一個不可訪問的內存頁面。這會導致訪問崩潰,如果您嘗試讀取或寫入分配範圍外。

詳情點擊這裏:

https://developer.apple.com/library/mac/documentation/Performance/Conceptual/ManagingMemory/Articles/MallocDebug.html

+0

嘿,我已經嘗試過malloc守衛,並且在調試時耗盡內存。 –

+0

會發生。它爆炸內存使用。你需要一個相當短的可重複步驟。 – bbum