Sto scrivendo uno strumento per l'analisi core dump e una cosa che vorrei stampare è una stima di quanta memoria virtuale il processo stava usando al momento del dump. Questi core dump potrebbero essere dovuti a crash o potrebbero essere rilevati manualmente usando gcore (ad esempio per il dimensionamento). In sostanza, mi piacerebbe stampare l'equivalente della colonna PS VSZ.Come si approssima la memoria virtuale utilizzata (VSZ) usando un core dump e gdb su Linux?
Ho esaminato subito e gdb e mi sono concentrato su quest'ultimo. Per esempio, ho un semplice programma che si blocca solo e vedo in PS:
$ ps auxwww | grep a.out
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 16644 0.0 0.0 4108 472 pts/5 S+ 13:51 0:00 ./a.out
prendo un nucleo utilizzando gcore, a quel punto sta usando 4,206,592 byte VSZ. Poi ho scritto uno script veloce che analizza l'output info target
e somma gli intervalli di indirizzi e ottengo 1,814,528 byte. Ho anche provato info proc mappings
ma sembra funzionare solo se il processo è in esecuzione.
Qualche idea?
Ho appena provato 'sezioni di informazioni di manutenzione' e ho ottenuto un numero leggermente maggiore, ma simile di 1.817.528 byte. – user379184