2012-09-03 90 views
0

我花了相當一段時間試圖追蹤這個問題,並從其他人那裏讀取多個相同問題的建議。我處理一個龐大的代碼庫,因此在沒有提示的情況下查找問題就像在乾草堆中尋找針。如何追查「釋放對象的錯誤校驗和」

關於我讀的建議是在* malloc_error_break *上添加一個斷點 - 但我該怎麼做。我知道我必須添加一個符號斷點,但我不確定在兩個文本字段Symbol和Module中輸入什麼內容?

我試圖啓用Malloc Scribble和Malloc Guard Edges - 但沒有一個會導致任何斷點或崩潰。

如果我啓用殭屍對象,程序停止崩潰,但輸出日誌中沒有任何內容顯示任何問題。

最後我試圖啓用Guard Malloc。據我所知,只有模擬器中工作,所以我試圖說 - 但問題是,這些程序在啓動階段執行崩潰在我的程序中的任何行之前:

0x958e0cd4 <+0000> mov 0x4(%esp),%eax 
0x958e0cd8 <+0004> mov %gs:0x0(,%eax,4),%eax < Crash 
0x958e0ce0 <+0012> ret 

和調用堆棧看起來是這樣的:

pthread_getspecific 
__dyld__dyld_start 

我不知道我在做什麼錯在這裏?

+0

symbol ='malloc_error_break'模塊在大多數情況下不需要定義。 – justin

回答

0

要在malloc_error_break上添加斷點,只需在調試器中停止並在「gdb」或「lldb」提示符處鍵入b malloc_error_break即可。

+0

如果我停止調試器並在「gdb」中鍵入b,它似乎在執行指針處設置了一個斷點。 –

相關問題