Sto cercando di esaminare lo stato dell'heap C/C++ da gdb su Linux amd64, c'è un modo carino per farlo?Esaminare le statistiche della memoria heap in C/C++ in gdb
Un approccio che ho provato è "chiamare mallinfo()" ma sfortunatamente non riesco a estrarre i valori che voglio dato che gdb non gestisce correttamente il valore restituito.
Non riesco facilmente a scrivere una funzione da compilare nel file binario per il processo a cui sono collegato, quindi posso semplicemente implementare la mia funzione per estrarre i valori chiamando mallinfo() nel mio codice questo modo. C'è forse un trucco intelligente che mi permetterà di fare questo al volo?
Un'altra opzione potrebbe essere quella di individuare l'heap e attraversare le intestazioni malloc/elenco libero; Apprezzerei qualsiasi suggerimento su dove potrei iniziare a trovare la posizione e il layout di questi.
Ho cercato Google e ho letto il problema per circa 2 ore e ho imparato alcune cose affascinanti ma non ho ancora trovato quello di cui ho bisogno.
Che cosa è necessario sapere sullo stato? Che tipo di statistiche hai bisogno di sapere? –
La dimensione dell'heap, la quantità utilizzata e l'importo gratuito sono un buon inizio –
Cosa non funziona correttamente gdb? – leedm777