GNU/Linux >> Linux の 問題 >  >> Linux

gdb での C/C++ ヒープ メモリ統計の調査

@fd - RedHat バグにあなたの答えがありました。

mallinfo 関数は廃止され、更新されません。真のクエリ統計 API は TDB です。今日は malloc_stats です そして malloc_info .どちらについてもドキュメントは見つかりませんが、提供されているものは次のとおりです。

これはあなたが必要としているものに十分近いですか?

(gdb) call malloc_stats()
Arena 0:
system bytes     =     135168
in use bytes     =         96
Total (incl. mmap):
system bytes     =     135168
in use bytes     =         96
max mmap regions =          0
max mmap bytes   =          0

(gdb) call malloc_info(0, stdout)
<malloc version="1">
<heap nr="0">
<sizes>
<unsorted from="1228788" to="1229476" total="3917678" count="3221220448"/>
</sizes>
<total type="fast" count="0" size="0"/>
<total type="rest" count="3221220448" size="3917678"/>
<system type="current" size="135168"/>
<system type="max" size="135168"/>
<aspace type="total" size="135168"/>
<aspace type="mprotect" size="135168"/>
</heap>
<total type="fast" count="0" size="0"/>
<total type="rest" count="3221220448" size="3917678"/>
<system type="current" size="135168
/>
<system type="max" size="135168
/>
<aspace type="total" size="135168"/>
<aspace type="mprotect" size="135168"/>
</malloc>

コードを変更できる場合:

#include <malloc.h>
#include <stdio.h>

void dumpMallinfo(void) {
  struct mallinfo m = mallinfo();
  printf("uordblks = %d\nfordblks = %d\n", m.uordblks, m.fordblks);
}

GDB では、call dumpMallinfo() できます .


Linux
  1. Linux 上の gdb 用にプログラムで C または C++ コードにブレークポイントを設定する

  2. Linux でプロセスのヒープ サイズを確認する方法

  3. C/C++ で利用可能なネットワーク インターフェイスを見つける

  1. Linux の C/C++ でユーザー名を取得するには?

  2. すべてのインターフェイスの C/C++ Linux MAC アドレス

  3. c/c++ 静的ライブラリの依存関係を一覧表示するには?

  1. チュートリアル:c.vim プラグインを使用して Vim を C/C++ IDE として作成する

  2. root ユーザーがコマンドを実行しているかどうかを C/C++ アプリケーションで判断するにはどうすればよいですか?

  3. c/c++ ソースコードのコメントのスペルをチェックする Linux ツール