GNU/Linux >> Belajar Linux >  >> Linux

Memeriksa statistik memori C/C++ Heap di gdb

@fd - bug RedHat memiliki jawaban Anda.

mallinfo fungsi telah ditinggalkan, dan tidak akan diperbarui. API statistik kueri yang sebenarnya adalah TDB. Hari ini, Anda memiliki malloc_stats dan malloc_info . Saya tidak dapat menemukan dokumentasi apa pun di keduanya, tetapi inilah yang mereka berikan kepada Anda.

Apakah ini cukup dekat dengan yang Anda butuhkan?

(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>

Jika Anda dapat mengubah kode:

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

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

Di GDB, Anda dapat call dumpMallinfo() .


Linux
  1. Bagaimana Cara Menentukan Pengkodean Karakter yang Digunakan Terminal Dalam Program C/c++?

  2. Tutorial:Jadikan Vim sebagai IDE C/C++ Anda Menggunakan Plugin c.vim

  3. Apakah ada C++ gdb GUI untuk Linux?

  1. Cara secara terprogram menyebabkan core dump di C/C++

  2. Tetapkan breakpoint dalam kode C atau C++ secara terprogram untuk gdb di Linux

  3. Cara memeriksa ukuran heap untuk suatu proses di Linux

  1. Temukan antarmuka jaringan yang tersedia di C/C++?

  2. Bagaimana cara mendapatkan nama pengguna di C/C++ di Linux?

  3. C/C++ Linux MAC Address dari semua antarmuka