Quiero depurar algo en glibc, así que quiero usar una versión de depuración de glibc para compilar el programa. si solo uso "gcc -o test test.c" para construir el programa,
apt-get install libc6-dbg
apt-get fuente libc6-dev
cuando estaba depurando los programas, se le dice a algunos val que está optimizado. y EIP siempre retrocede.
¿Cómo puedo depurar la versión de depuración de glibc?
Advertencia : uso fedora pero tiene un mecanismo similar.
El paquete de depuración descarga un archivo adicional que tiene la información de depuración que obtendría si compilara con -g para glibc .
Pero este paquete coincide con la compilación estándar que se crea con optimización (por ejemplo -O2 ).
Es la optimización la que está causando el comportamiento que está viendo. Por lo tanto, la "cobertura" de gdb será irregular.
Lo que quieres es una versión de glibc construida con -gdwarf-2 y -O0 . AFAIK, tendrás que conseguirlo construyendo glibc tú mismo desde la fuente.
Probablemente tendrá que ejecutar el script de configure y seleccionar las opciones -g y -O para la compilación. Luego, ejecuta make . Los detalles exactos deben estar en la documentación fuente [o en línea] en alguna parte.
Luego, tendrá que vincular [forzosamente] su programa con la versión compilada desde la fuente.