2012-09-30 6 views

risposta

8

Potete farlo con l'ultima versione di Valgrind (3.8.1):

crea il file eseguibile di attivare il gdbserver all'avvio:

valgrind --vgdb-error=0 ....<your program> 

Poi in un'altra finestra, collegare un gdb per Valgrind (seguendo le indicazioni in Valgrind). poi mettere un punto di interruzione in un posto rilevante (ad esempio a fine principale) e utilizzare il comando gdb

continue 

fino al raggiungimento del punto di interruzione. Poi fare una ricerca perdita da gdb:

monitor leak_check full reachable any 

quindi elencare l'indirizzo (i) dei blocchi raggiungibili del relativo record di perdita nr

monitor block_list <loss_record_nr> 

È quindi possibile utilizzare le funzioni di gdb per esaminare la memoria degli indirizzi indicati. Nota anche il comando potenzialmente interessante "who_points_at" se siete alla ricerca che ha mantenuto un puntatore a questa memoria.

+1

ottengo "' valgrind: opzione Bad: --vgdb-error = 0 '". (Valgrind-3.6.1) – panzi

+0

@panzi Penso che questo funziona solo da 3.8.1 di cui sopra come PPW menzionato. Ho provato questo con valgrind-3.11.0 e non ci sono stati problemi. – Nubcake