2011-08-06 84 views
20

如何在Xcode4中設置malloc_error_break?此外,我似乎得到這個錯誤malloc: *** error for object 0x4d80814: incorrect checksum for freed object - object was probably modified after being freed. 在Xcode 4中設置malloc_error_break

有無論如何我可以檢查什麼對象0x4d80814是?它不會顯示在調試器的變量列表中。

+1

它不會顯示在調試器中,因爲它已被釋放,並可能從Apple的代碼內部引用。我建議使用Analyzer來查找內存管理中的任何明顯不一致。 –

+0

機會是你正在修改一個已經釋放的對象,'malloc'在一段時間後檢測到它。如果您對其進行配置並使用殭屍工具,則可能會指出錯誤的位置。 –

回答

53

我認爲這是如何完成的。

  • 點擊斷點導航器(看起來像一個路標)在左邊欄上 的XCode 4
  • 在左下角有一個加號上面。點擊它。
  • 添加符號斷點並將malloc_error_break設置爲符號。
  • 單擊下一個斷點按鈕(它看起來像|>)並位於底部面板上。它會帶你到導致錯誤的行。

通常它是由物體引起的創建爲尚不存在的其他對象的子對象(其spritenode存在之前創建即SKPhysicsBody)

+3

在我的情況下沒有幫助 –

+0

您能否提供給我更多此點的詳細信息:單擊下一個斷點按鈕(它看起來像|>)並位於底部面板上。它會帶你到導致錯誤的行。 我使用的是xcode 8,但我沒有找到|>這種符號 –

13

這是斷點按鈕看起來是這樣的:

enter image description here

這是在左下角的加號:

enter image description here

男人,花了我一會兒才找到他們倆!

+3

加油吧,夥計。對於一直有蜜蜂通過鼠標/鍵盤快捷鍵設置斷點的人來說,這是新東西。並非所有人都知道 – x10

4

你也可以直接通過gdb命令窗口來完成。

break malloc_error_break 

或LLDB:

breakpoint set -n malloc_error_break 

爲了XCode中4打開調試命令窗口中,單擊右上角上方的「查看」中間的按鈕,然後單擊頂部中間的按鈕剛剛打開的底部調試窗格的右下角。另請參閱Input to console in Xcode 4

+0

請注意,這是gdb,但默認的調試器通常是lldb,它具有不同的語法 – yairchu