Sto sviluppando un'applicazione C++ a 64 bit collegata in modo statico su CentOS a 64 bit a 64 bit utilizzando i pacchetti standard gcc 4.4 dai repository CentOS. Sembra che stia usando più memoria di quanto mi aspettassi, quindi ho provato a usare massif per sagomare l'utilizzo della memoria. Ho compilato con le informazioni di debug e quindi eseguireLo strumento massiccio di Valgrind non profilerà la mia applicazione
valgrind --tool = massiccio ./MyProg
dalla directory in cui risiede MyProg. Non produce mai risultati diversi dal seguente esempio massif.out.XXXX.
desc: (none)
cmd: ./MyProg
time_unit: i
#-----------
snapshot=0
#-----------
time=0
mem_heap_B=0
mem_heap_extra_B=0
mem_stacks_B=0
heap_tree=empty
Si noti che questo è l'intero contenuto del file e il mio programma può funzionare per molti minuti.
Ho provato varie opzioni per valgrind e massif senza esito. Ho anche provato a utilizzare il percorso assoluto per MyProg, per ogni evenienza. Ho provato a scaricare la versione stabile più recente di valgrind (3.8.1) e a compilarla ed eseguirla (dato che CentOS utilizza 3.5.0) con lo stesso risultato. Come un controllo di integrità correvo
valgrind --tool = ls -l massiccio
e produsse più istantanee agli usi non-zero memoria, come previsto.
Ho provato a cercare online utilizzando tutte le combinazioni di parole chiave a cui potevo pensare ma non ho riscontrato problemi simili.
Come nota a margine, posso profilare correttamente l'applicazione utilizzando lo strumento di memcheck predefinito di valgrind, nel caso in cui si tratti di informazioni utili.
Qualcuno sa perché il massiccio non riuscirebbe a profilare la mia domanda?
Il programma è collegato staticamente? Se fai un 'ldd./MyProg', elenca un sacco di librerie condivise, o non stampa nulla? –
È collegato staticamente. Ho modificato la domanda per chiarire questo. – Tyson