Linux amd64 の gdb 内から C/C++ ヒープの状態を調査しようとしていますが、これを行う良い方法はありますか?
私が試したアプローチの 1 つは「malinfo() を呼び出す」ことですが、残念ながら、gdb が戻り値を適切に処理しないため、必要な値を抽出することはできません。
接続しているプロセスのバイナリにコンパイルされる関数を簡単に作成できないため、この方法で自分のコードで mallinfo() を呼び出して値を抽出する独自の関数を簡単に実装できます。これをオンザフライで実行できる巧妙なトリックはありますか?
別のオプションは、ヒープを見つけて、malloc ヘッダー/空きリストをトラバースすることです。これらの場所とレイアウトを見つけるためにどこから始めればよいかについての指針をいただければ幸いです。
私は Google を試して、問題を約 2 時間読んでみました。いくつかの興味深いことを学びましたが、まだ必要なものが見つかりません。