Ho bisogno di sapere come trovare le perdite di memoria in una libreria condivisa che verrà caricata su un binario di rilascio. Intendo la libreria condivisa che ho creato con l'opzione -g ma il file binario che carica la libreria condivisa non è costruito con l'opzione -g.valgrind - Trova perdita di memoria in una libreria condivisa
Ottengo il rapporto di perdita come segue.
==739== at 0x4A05809: malloc (vg_replace_malloc.c:149)
==739== by 0x84781B1: ???
==739== by 0x87507F5: ???
==739== by 0x874CF47: ???
==739== by 0x874E657: ???
==739== by 0x874F7C2: ???
==739== by 0x8779C0C: ???
Per favore fatemi sapere come ottenere la traccia dello stack della perdita dalla libreria condivisa?
C'era una patch che forniva un'opzione per disabilitare lo scaricamento dei simboli dopo dlclose. La patch funziona e l'ho usata molte volte. Ma la patch era sulla vecchia versione e immagino che ora sia marcia. https://bugs.kde.org/show_bug.cgi?id=79362 – k0n3ru
@ Tom: vorrei far notare che la soluzione "ometti dlclose" può causare molti falsi positivi. Se ci sono oggetti nella pila che distruggono elementi, che erano nell'heap, allora questi sono stati mostrati nell'output come perdite, perché dlclose avrebbe fatto il destroy in primo luogo. – newhouse
E il secondo non funziona bene, se valgrind è a 64 bit, ma si esegue il debug 32 – newhouse