2012-05-17 23 views
5

Me estoy volviendo raro fallo de seg que parece provenir de algún lugar que no está en mi programa ... no explícitamente de todos modos. Llamo a "strcmp" en dos arreglos ... Ambas matrices se almacenan en el mismo tipo de estructuras. Me estoy poniendo en armonía con la notación de puntos y uno a través de la eliminación de referencias con "->":Error de segmentación: "... no existe ese archivo o directorio"

int name = strcmp(one.name, two->name); 

Se compila bien, pero cuando lo ejecuto me da la culpa seg. He intentado rastrearlo con GDB, pero cuando coloco los puntos de ruptura justo antes de donde creo que debería ocurrir, según las fallas de todos modos. Obtengo:

Program received signal SIGSEGV, Segmentation fault. 
__strcmp_ia32() at ../sysdeps/i386/i686/multiarch/../strcmp.S:40 
40 ../sysdeps/i386/i686/multiarch/../strcmp.S: No such file or directory. 
    in ../sysdeps/i386/i686/multiarch/../strcmp.S 

FML. Sugerencias? ¡Gracias!

+1

¿Probaste una traza inversa cuando segfaults en gdb? –

+2

¿Cuál es el valor de 'one.name',' two', y 'two-> name' en el punto de llamada? – Mud

+3

Ha encontrado un error de segmentación y la fuente de 'strcmp' no existe en su entorno, cuando el sistema intenta buscarla * después de que se haya producido el fallo seg. La fuente no es necesaria para estar presente, es una función de biblioteca estándar. Por lo tanto, el problema es que está sobrescribiendo los límites de la memoria en otro lugar. Ejecutar su programa con valgrind o una herramienta de análisis de memoria debe dar los detalles exactos de dónde. –

Respuesta

2

Mi sugerencia: compilarlo con -g y ejecutarlo a través de valgrind.

Cuestiones relacionadas