2011-09-14 11 views
17

Ho un'applicazione x86 linux che utilizza varie librerie di oggetti condivisi di terze parti. Ho il sospetto che queste librerie sono perdite di memoria (dal momento che non può assolutamente essere mio codice ;-)Alternativa a valgrind (memcheck) per trovare perdite su linux?

ho provato la valgrind fidato, ma è morto di una morte orribile, perché one of the third-party libraries is using an obscure x86 instruction che valgrind doesn't implement.

ho trovato a recommendation for DUMA e dato una prova (con la tecnica LD_PRELOAD per portare DUMA in a run-time), ma è interrotta lamentano un'operazione di punizione sulla memoria che non è stato assegnato tramite DUMA (quasi certamente da qualche costruttore di un oggetto statico in una delle librerie di terze parti citate in precedenza).

Esistono altri strumenti di collegamento in fase di esecuzione (o che altrimenti non richiedono la ricompilazione/ricollegamento) che funzioneranno su linux?

risposta

5

Dare prova a Dr. Memory. Si basa su DynamoRIO e condivide molte delle funzioni con Valgrind.

+3

Volevo solo aggiungere che è solo a 32 bit. –

+0

@SantoshTiwari: Io non la penso così. Penso a cosa intendi dire che i pacchetti binari per la tua piattaforma potrebbero essere disponibili solo per una piattaforma specifica. DynamoRIO è flessibile e funziona anche su (alcune) piattaforme a 64 bit. – 0xC0000022L

+1

~~ Dr.M ~~ Questa versione di memoria Dr. non supporta le applicazioni a 64 bit. –

0

Heapusage è un semplice strumento di runtime per la ricerca di perdite di memoria su Linux e macOS. Il formato di registrazione dell'output per le perdite è abbastanza simile a Valgrind, ma registra solo perdite definite (ad esempio, le allocazioni non sono state liberate al termine).

Full disclosure: Ho scritto Heapusage per l'utilizzo in situazioni in cui Valgrind è inadeguato (applicazioni ad alte prestazioni e anche per architetture CPU non supportate da Valgrind).

Problemi correlati