segmentacion - Falla de segmentación
segmentacion de mercado twitter (2)
Compila con depuración en ( gcc -g *.c
) y luego mira tu stack.
Específicamente este error se debe a que llamaste free
en un puntero malo.
Algún código puede ayudarnos a ver su problema más específicamente.
Posible duplicado:
Fallo de segmentación en la implementación de btree
Me sale un error como este, ¿cómo puedo depurarlo? ¿Puedes dar algún método para depurar este error?
*** glibc detected *** ./a.out: free(): invalid pointer: 0x0821b158 ***
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6(+0x6b591)[0xbd7591]
/lib/tls/i686/cmov/libc.so.6(+0x6cde8)[0xbd8de8]
/lib/tls/i686/cmov/libc.so.6(cfree+0x6d)[0xbdbecd]
./a.out[0x80490c3]
./a.out[0x8048bdc]
./a.out[0x8048642]
/lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe6)[0xb82bd6]
./a.out[0x80484b1]
======= Memory map: ========
004e5000-00500000 r-xp 00000000 08:06 1192669 /lib/ld-2.11.1.so
00500000-00501000 r--p 0001a000 08:06 1192669 /lib/ld-2.11.1.so
00501000-00502000 rw-p 0001b000 08:06 1192669 /lib/ld-2.11.1.so
007aa000-007c7000 r-xp 00000000 08:06 1179731 /lib/libgcc_s.so.1
007c7000-007c8000 r--p 0001c000 08:06 1179731 /lib/libgcc_s.so.1
007c8000-007c9000 rw-p 0001d000 08:06 1179731 /lib/libgcc_s.so.1
0096b000-0096c000 r-xp 00000000 00:00 0 [vdso]
00b6c000-00cbf000 r-xp 00000000 08:06 1311379 /lib/tls/i686/cmov/libc-2.11.1.so
00cbf000-00cc0000 ---p 00153000 08:06 1311379 /lib/tls/i686/cmov/libc-2.11.1.so
00cc0000-00cc2000 r--p 00153000 08:06 1311379 /lib/tls/i686/cmov/libc-2.11.1.so
00cc2000-00cc3000 rw-p 00155000 08:06 1311379 /lib/tls/i686/cmov/libc-2.11.1.so
00cc3000-00cc6000 rw-p 00000000 00:00 0
08048000-0804a000 r-xp 00000000 08:06 393339 /home/user/Desktop/a.out
0804a000-0804b000 r--p 00001000 08:06 393339 /home/user/Desktop/a.out
0804b000-0804c000 rw-p 00002000 08:06 393339 /home/user/Desktop/a.out
0821b000-0823c000 rw-p 00000000 00:00 0 [heap]
b7600000-b7621000 rw-p 00000000 00:00 0
b7621000-b7700000 ---p 00000000 00:00 0
b7708000-b7709000 rw-p 00000000 00:00 0
b771a000-b771e000 rw-p 00000000 00:00 0
bfc39000-bfc4e000 rw-p 00000000 00:00 0 [stack]
Aborted
Probablemente descubrirá que la manera más fácil de corregir errores como este es con el uso de un depurador.
Como Starkey sugirió, asegúrese de habilitar los símbolos de depuración al compilar (a través de la opción -g
a gcc).
Puede encontrar que cuando su programa se bloqueó con la falla de segmentación, generó un archivo central. Puede usar un depurador (por ej., Gdb ) para abrir el archivo central e investigar la pila de llamadas. La ventaja de utilizar el depurador es que (si ha habilitado los símbolos de depuración) le mostrará los números de línea dentro de sus archivos de origen, en lugar de solo proporcionar ubicaciones de memoria.
Si no tiene un archivo central, puede ejecutar su aplicación desde gdb y luego reproducir el error de segmentación.