2011-10-14 36 views
6

在Xcode 4.x中,我編輯了我的Run方案以'Enable Guard Malloc',因爲我有一個不需要的malloc錯誤,我需要追蹤。我知道我需要在模擬器中運行以使用此功能。然而,當我這樣做的應用程序立即凍結和Xcode中顯示我一個堆棧跟蹤,看起來像這樣:Xcode 4:由於iPad模擬器的dylib錯誤,無法使用Enable Guard Malloc

Stack trace in Xcode 4.x

我GOOGLE了周圍找到一個解決方案,但迄今爲止沒有喜悅。據我所知,我應該在我的方案中設置一個環境變量:

DYLD_INSERT_LIBRARIES -> /usr/lib/libgmalloc.dylib 

但是,這並不能解決問題。我也嘗試過'體系'作爲價值,但那也不起作用。

任何人都可以提出解決這個dylib問題,或者可能推薦'Enable Guard Malloc'的替代方法來確定malloc'd堆區被超出的位置?

UPDATE

爲了澄清,這是錯誤的,我對付類型:

malloc: *** error for object 0x2b4b54: incorrect checksum for freed object - object was probably modified after being freed. 
*** set a breakpoint in malloc_error_break to debug 

我試過設置的malloc_error_break象徵斷點,但它仍然打破「隨機'在記憶問題上而不是在超過分配區域的時候。

+0

請將堆棧軌跡包含爲文本; Google無法輕鬆找到此頁面! –

+0

即使在全新的空白實用程序項目上,我也遇到同樣的問題。在我的安裝中似乎出現了一些問題,但到目前爲止還沒有找到解決的辦法。當我切換到iOS 4.3模擬器時,問題消失了,所以它似乎是iOS 5模擬器特有的。 – russbishop

回答

2

爲了與調試幫助,您可以設置MallocStackLogging,那麼當你的應用程序崩潰,在gdb的控制檯輸入:

(gdb) info malloc-history 0x543216 

替換0x543216與導致崩潰的對象的地址,你會得到一個更有用的堆棧跟蹤,它應該可以幫助您找出導致問題的代碼中的確切行。

See this article for more detailed instructions.

+0

夢幻般的,謝謝你的朋友 – KomodoDave

+0

Np,很樂意幫忙。 – chown