インストルメントを使用してデバッグすると、malloc スタックを確認できます。
私はあなたと同じ問題に遭遇し、同様にlldbを使用するときにmalloc履歴を取得する方法を知りたいと思っていました. 残念ながらmalloc-history
、gdb にあるような気の利いたコマンドは見つかりませんでした。正直なところ、デバッガーを切り替えたばかりですが、そうする必要はないと感じていたので、面倒でした。
インストゥルメントを使用して malloc 履歴を見つけるには、次のようにします。
- プロジェクトのプロファイリング
- 楽器のリストからゾンビを選択します

- アプリが問題を引き起こすようにする
- この時点で、既に割り当てが解除されたアドレスが表示され、それを調べることができます。
この時点で malloc の履歴を表示するのは簡単なことです。私がやっている仕事に固有のクラス/プロジェクト名を持つ部分を黒塗りしましたが、これらの情報を取得する方法の本質と有用性は存在すると思います.
最後の言葉
私が遭遇した問題は、次のようなメッセージを生成しました:
*** -[someClass preserve]: 割り当て解除されたインスタンス 0x48081fb0 に送信されたメッセージ someProject(84051,0xacd902c0) malloc: 標準レコーダーを使用して malloc スタックをディスクに記録します
retain
それが壊れていたコードにはそれがなかったので(それがあった行のゲッターまたはセッターにはありませんでした)、私はこれがどこから来ているのか本当に困惑しました。removeObserver:forKeyPath:
特定のオブジェクトがdealloc
編集されたときに、私が呼び出していなかったことが判明しました。実行の後半で、KVO が行のセッターに対して行われ、KVO が既に解放されたオブジェクトに通知しようとしたため、プログラムが爆発しました。