2011-09-20 15 views
8

Ho bisogno di uno strumento che mi aiuti a trovare perdite di memoria in un programma c in modo simile a quello che fa valgrind. Dovrebbe capire quando un programma sovrascrive la memoria che non dovrebbe (per esempio calcolando male un indice dell'array). Ho appreso che c'è l'utilità di perdite insieme all'app degli strumenti grafici.Strumento simile a Valgrind su Mac OS 10.7 (Lion)

Tuttavia penso che possa trovare solo memoria allocata con nuovo (o malloc) che non è stato rilasciato e non è più accessibile. Inoltre ho imparato che valgrind dovrebbe funzionare su versioni precedenti (10.5 e 10.6), ma io uso lion (10.7).

+0

Come sopra scritto, non funziona (ancora) con leone (10.7). – Nils

+1

@Mat: Lion (10.7) non è ancora supportato come OP ha sottolineato, ci stanno lavorando da giugno, ma non sembra così semplice: https://bugs.kde.org/show_bug.cgi?id= 275168 – Matthieu

+0

Dal tuo link @Matthieu, sembra che le persone lo abbiano fatto funzionare. –

risposta

4

Vorrei utilizzare lo strumento di sviluppo XCode MallocDebug. Si dovrebbe avere questo installato con XCode in /Developer cartella

In alternativa, è possibile eseguire l'applicazione in gdb e utilizzare la registrazione malloc nativo eseguendo

% gdb <program name> 
(gdb) set env MallocStackLoggingNoCompact 1 
(gdb) run 

Poi, si può utilizzare /usr/bin/leaks e /usr/bin/malloc_history per trovare le perdite evidenti

+0

Testato in un caso in cui ho accidentalmente moltiplicato 2 vars in un accesso ad array invece di aggiungerli. w/o MallocStackLoggingNoCompact l'output bt è inutile, ma dopo aver impostato che mi ha detto la linea esatta! Grazie per il suggerimento! – Nils

+0

Tuttavia non sono riuscito a trovare MallocDebug in 10.7. Anche lo squalo non c'è più:: – Nils

+0

Sembra che MallocDebug sia stato sostituito dallo strumento "Leaks" nell'applicazione "Instruments" – Seth

8

Valgrind 3.7.0 (rilasciato 5 ° novembre 2011) su pports Lion. http://valgrind.org

+0

È semplice da scaricare, da compilare e da usare anche. –

Problemi correlati