Estoy siguiendo 'Learn C the Hard Way', específicamente the chapter on Valgrind. Este capítulo le proporciona un programa deliberadamente incorrecto para mostrar cómo funciona Valgrind.Valgrind no muestra los números de línea a pesar del indicador -g (en Ubuntu 11.10/VirtualBox)
Cuando ejecuto el ejercicio en Valgrind no obtengo los números de línea en mi rastro de pila, solo '(debajo del principal)' para los errores.
Estoy definitivamente compilando con la bandera -g.
Mi salida Valgrind es el siguiente:
[email protected]:~/projects/Learning/C$ valgrind ./ex4
==5190== Memcheck, a memory error detector
==5190== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al.
==5190== Using Valgrind-3.6.1-Debian and LibVEX; rerun with -h for copyright info
==5190== Command: ./ex4
==5190==
==5190== Use of uninitialised value of size 4
==5190== at 0x4078B2B: _itoa_word (_itoa.c:195)
==5190== by 0x407CE55: vfprintf (vfprintf.c:1619)
==5190== by 0x40831DE: printf (printf.c:35)
==5190== by 0x4052112: (below main) (libc-start.c:226)
==5190==
==5190== Conditional jump or move depends on uninitialised value(s)
==5190== at 0x4078B33: _itoa_word (_itoa.c:195)
==5190== by 0x407CE55: vfprintf (vfprintf.c:1619)
==5190== by 0x40831DE: printf (printf.c:35)
==5190== by 0x4052112: (below main) (libc-start.c:226)
==5190==
==5190== Conditional jump or move depends on uninitialised value(s)
==5190== at 0x407CC10: vfprintf (vfprintf.c:1619)
==5190== by 0x40831DE: printf (printf.c:35)
==5190== by 0x4052112: (below main) (libc-start.c:226)
==5190==
==5190== Conditional jump or move depends on uninitialised value(s)
==5190== at 0x407C742: vfprintf (vfprintf.c:1619)
==5190== by 0x40831DE: printf (printf.c:35)
==5190== by 0x4052112: (below main) (libc-start.c:226)
==5190==
I am 0 years old.
I am 68882420 inches tall.
==5190==
==5190== HEAP SUMMARY:
==5190== in use at exit: 0 bytes in 0 blocks
==5190== total heap usage: 0 allocs, 0 frees, 0 bytes allocated
==5190==
==5190== All heap blocks were freed -- no leaks are possible
==5190==
==5190== For counts of detected and suppressed errors, rerun with: -v
==5190== Use --track-origins=yes to see where uninitialised values come from
==5190== ERROR SUMMARY: 22 errors from 4 contexts (suppressed: 11 from 6)
estoy usando Ubuntu 11.10 en un VirtualBox VM.
Gracias por cualquier ayuda.
actualización
Parece que si llamo a una función de main()
y que función contiene un error (por ejemplo, una variable no inicializada), entonces yo hago obtener una huella en el lugar que la función se llama en main()
. Sin embargo, los errores dentro de main()
permanecen sin especificar. Ver this paste para un ejemplo.
Por favor, crear un directorio nuevo, vacío, y el lugar en ese directorio lo que se encuentra en http://pastebin.com/A6bK2hdw; es un script bash que intenta recrear el problema. Cuando lo ejecuto, obtengo un resultado como el que puede ver en http://pastebin.com/JncWz2GF, que es lo que su tutorial dice que debe obtener. Ejecútalo tú mismo. Si obtienes la salida adecuada, entonces determina cómo la forma en que lo hiciste difiere de este script de shell. Si ejecuta este script de shell y obtiene el resultado incorrecto como nos muestra arriba, regrese y hablemos de ello. –
Hola @Bill, gracias por tu ayuda. Al ejecutar su script, obtengo el mismo resultado más una advertencia sobre el sesgo del reloj. [http://pastebin.com/fjfPrLts](http://pastebin.com/fjfPrLts) – djb
¿Quiere decir "el mismo resultado" que obtuvo antes, o "el mismo resultado" que obtuve? –