2012-09-30 47 views

Respuesta

8

Usted puede hacer eso con la última versión de Valgrind (3.8.1):

Comience su ejecutable activar el gdbserver en el inicio:

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

Luego, en otra ventana, conectar una GDB a Valgrind (siguiendo las indicaciones dada por Valgrind). a continuación, poner un punto de interrupción en un lugar relevante (por ejemplo, al final de principal) y utilizar el gdb comando

continue 

hasta que se alcanza el punto de interrupción. luego hacer una búsqueda de fugas de GDB:

monitor leak_check full reachable any 

luego anote la dirección (es) de los bloques alcanzables del nr pérdida de registro correspondiente

monitor block_list <loss_record_nr> 

A continuación, puede utilizar las funciones del BGF para examinar la memoria de las direcciones dadas. Tenga en cuenta también el comando potencialmente interesante "who_points_at" si está buscando quién ha mantenido un puntero a esta memoria.

+1

Me aparece "' valgrind: opción incorrecta: --vgdb-error = 0' ". (valgrind-3.6.1) – panzi

+0

@panzi Creo que esto solo funciona desde 3.8.1 arriba como se mencionó en ppw. Intenté esto con valgrind-3.11.0 y no hubo problemas. – Nubcake

Cuestiones relacionadas