2011-08-06 18 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

関連する問題