GNU/Linux >> Tutoriels Linux >  >> Linux

Examen des statistiques de mémoire de tas C/C++ dans gdb

@fd - le bogue RedHat avait votre réponse.

Le mallinfo La fonction est obsolète et ne sera pas mise à jour. Une véritable API de statistiques de requête est TDB. Aujourd'hui, vous avez malloc_stats et malloc_info . Je ne trouve aucune documentation sur l'un ou l'autre, mais voici ce qu'ils vous donnent.

Est-ce assez proche de ce dont vous avez besoin ?

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

Si vous pouvez changer le code :

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

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

Dans GDB, vous pouvez call dumpMallinfo() .


Linux
  1. Tutoriel :Faites de Vim votre IDE C/C++ à l'aide du plugin c.vim

  2. Existe-t-il une interface graphique gdb C++ pour Linux ?

  3. Comment provoquer par programme un core dump en C/C++

  4. Définir un point d'arrêt dans le code C ou C++ par programmation pour gdb sous Linux

  5. Comment vérifier la taille du tas pour un processus sous Linux

Obtenez des statistiques d'utilisation de la mémoire avec cet outil de ligne de commande Linux

Commande Linux vmstat - Outil pour rapporter les statistiques de la mémoire virtuelle

Comment exécuter des programmes C/C++ sous Linux [Terminal &Eclipse]

Un guide de la commande vmstat sous Linux

Comment utiliser GDB dans Eclipse pour le débogage C/C++ ?

Java utilisant beaucoup plus de mémoire que la taille du tas (ou taille correctement la limite de mémoire Docker)