問題タブ [malloc-history]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iphone - iPhone - 「解放されているポインターが割り当てられていませんでした」エラーのデバッグ
ポインターを解放しすぎると、次のようなエラーが表示される場合があります。
「解放されるポインタは割り当てられませんでした」
シミュレーターでデバッグするとき、ビルド引数 MallocStackLogging = YES を追加します。これにより、ターミナルで malloc_history を使用して、ポインターを解放しすぎた場所を追跡できます。
このビルド引数を使用してデバイスでデバッグすると、「スタック ログ ファイルを作成できません」など、あらゆる種類のコンソール エラーが発生します。
奇妙なことに、シミュレーターではなく、デバイスで解放されたポインターエラーが表示されます。
デバイス自体を使用してこれらを追跡した経験のある人はいますか?
ありがとう!
glibc - mtrace+MALLOC_TRACE-バッファリングを無効にする
バッファリングを無効にしmtrace
て、名前の付いたファイルを出力するにはどうすればよいですMALLOC_TRACE
か?
mtraceは次のように開始されます。
iphone - 解放されるポインターが割り当てられませんでした。複雑な malloc 履歴のヘルプ
ここにリンクされている便利なガイドに従っています:
iPhone - 「解放中のポインタが割り当てられていません」というエラーのデバッグ
しかし、malloc_history は本当に私をループに陥れています。
objective-c - malloc_historyダンプを理解する
Objective-cでリリース/割り当ての問題をデバッグする方法を尋ねたことがあれば、問題を追跡するのに役立つこれらの環境設定に出くわしたことでしょう。
NSZombieEnabled
-リリース後もオブジェクトを保持するため、ポインタなどを取得できます。MallocStackLogging
-後で参照できるようにオブジェクトの履歴を保持しますNSDebugEnabled
これらはすべてYES
、「実行可能ファイル」(グループツリーにあります)情報の「引数」タブの「環境」セクションで設定します。
だから、私はこのコンソール出力を取得しています
MyApp [ 4413:40b]-[CALayerretainCount]:割り当て解除されたインスタンス0x4dbb170に送信されたメッセージ
次に、デバッガーがブレークを転送して次のように入力している間に、ターミナルを開きます。
malloc_history 4413 0x4dbb170
次に、大きなテキストダンプを取得します。私が理解している限り、重要な点は次のとおりです。
1
2
3
私が理解していないのは、履歴がALLOC、FREE、ALLOCだった場合、なぜエラーはそれが解放されたことを示しているのですか(net +1 alloc)?
または、ダンプについての私の理解は間違っていますか?
編集(フレッシュラン=異なるオブジェクトポインタ):
機器によるゾンビ検出:
なぜ、どのように、保持カウントは1から-1にジャンプしますか?
ゾンビのバックトレースを見ると、保持カウントが呼び出されているように見えます:Quartzからrelease_root_if_unused
編集:解決済み-スーパーからビューを削除してから解放していました。放すだけで直ります。
objective-c - 割り当て解除されたインスタンス | 「プロセスが存在しないため、Malloc_history はプロセス XYZ を調べることができません。」
カスタムUIViewで次のメソッドを使用して、メモリの問題があります(はい;)iOSは初めてです)。
ヘッダーファイル
実装は、タッチに関連付けられた圧力で円とラベルを描画します。指で触れるたびに、このビューのオブジェクトが作成されます。
この特定のタッチの感知圧力を更新するために、この次のメソッドがコントローラーによって呼び出されない限り、すべて正常に機能します。
次のエラーが表示されます。
アプリケーションがクラッシュした後、デバッグ コンソールでメモリ トレースを調査する必要がありましたshell malloc_history <PID> 0x17dfb0
。その結果、コンソールは次を返します。
malloc_history cannot examine process 5838 because the process does not
存在。
だからここに質問:
- ここで明らかな保持、解放の問題を誰かが見ることができますか?
- どうすれば
malloc_history <PID> <Address
> 動作しますか?
お時間をいただき、リダイレクトと回答をありがとうございました!
キリスト教徒
iphone - デバイスでMallocStackLoggingを使用するにはどうすればよいですか?
でデバッグしたいiPhoneアプリのメモリの問題がありMallocStackLogging
ます。エラーにはジャイロスコープが関係しているため、シミュレータではなくデバイスでデバッグする必要があります。
環境変数を設定するMallocStackLogging
と、iPhoneはマロックスタックログを適切に記録します。
では、どうすれば彼らと協力できますか?
XcodeOrganizerを使用してそれらをMacに転送できます。しかし、これら2つのファイルをどうすればよいでしょうか。
- stack-logs.1856.MyApp.index
- stack-logs.1856.MyApp.e8z3IL.link
Macの/tmpにあるファイルを移動してみて、次のように呼び出しました。
明らかに、このmalloc_history
コマンドはローカルマシンで実行中のプロセスを探します。ログファイルを手動で指定するオプションがありません。
(ジェイルブレイクされていない)デバイスでXcodeを直接操作するか、ログをMacに転送した後に、これを機能させる方法はありますか?
ios - プロセスが iOS に存在しないため、malloc_history はプロセス xxxxxx を調べることができません
以下の環境変数をプロジェクトに追加し、それらの値を YES に設定しました。
NSDebugEnabled NSZombieEnabled MallocStackLogging MallocStackLoggingNoCompact
http://www.cocoadev.com/index.pl?DebuggingAutoreleaseの手順に従いました
生成されたログに基づいて問題を見つけることができました。私の疑問は、オブジェクトが割り当てられた場所を見つけるためにスタックトレースを見つけようとしたときに、以下の情報を得たということです:
プロセスが存在しないため、malloc_history はプロセス 6963 を調べることができません。
ここで何か不足していますか?
以下は、作成されたログです。
アップデート:
以下のリンクがこれに関する優れた情報源であることがわかりました。
私はまだこれをテストしていません。
xcode4.2 - Xcode 4.2 で malloc 履歴を表示する
Xcode 4.2 で割り当て解除されたインスタンス エラーを見つけようとしています。Zombie Objects、Guard Malloc、および Malloc Stack オプションを有効にしました。
コンソールで Shell malloc_history pid address を使用しても何も表示されません。
私の質問は、Xcode 4.2 でオブジェクトの malloc 履歴を表示する方法や、私が間違っていることを知っている人はいますか?
ありがとう。
xcode - 現在実行中のアプリケーションの PID を取得する
XCode でデバッグしているときに、このサンプルから、現在デバッグされているアプリケーションの PID を取得する方法を知りたいと思いました。
2012-07-02 16:02:02.124 アプリ名[14995:700]
それらのどれがpidですか?アプリケーションの pid を必要とする malloc_history を使用してメモリ リークをチェックしたかったので、pid を取得する必要があります。
私は ff: の組み合わせを試しました。
しかし、私は常にプロセスが履歴に存在しないことを取得します(malloc_historyは、「」のような名前を持つアクセス権のあるプロセスを見つけることができません)
c++ - Visual Studio に malloc_history に相当するものはありますか?
非常に見つけにくいバグに直面しています。基本的に何が起こるかというと、1 つのスレッドがメモリ ブロックを解放している間に、別のスレッドがまだそれを参照しているということです (これはすべてをさらに難しくする私のコードではありません...)。
私は Windows プラットフォームを初めて使用しますが、Application Verifier と PageHeap を有効にして実行してみました - 問題は、エラーが発生しなくなったことです (おそらくすべてが遅くなったためです - だから私は古典的なレースを扱っています) -調子)。Linux では、この種のバグには Valgrind を使用しようとしますが、おそらくこれは Application Verifier と同じ効果があります (もうバグは見られません..)。
Mac OS XI では、malloc_history を使用してこのバグを追跡します。では、Visual Studio または WinDbg に相当するものはありますか? 私がやりたいことは次のとおりです。
- segfault で壊れるまでプログラムをデバッガーで実行します。
- 解放されたオブジェクトのアドレスを取得し、そこからブロックが実際に削除されたスタックトレースを取得します。
これは、一部の Windows/Visual Studio ツールで可能ですか?