Depuración de archivos core generados en la caja de un cliente

Obtenemos archivos básicos al ejecutar nuestro software en la caja de un cliente. Desafortunadamente porque siempre hemos compilado con -O2.sin los símbolos de depuración han llevado a situaciones en las que no hemos podido averiguar por qué se bloqueaba, hemos modificado las compilaciones para que ahora generen -g y -O2 juntos. Luego aconsejamos al Cliente que ejecute un binario -g para que sea más fácil de depurar.

Tengo algunas preguntas:

¿Qué sucede cuando se genera un archivo principal desde una distribución de Linux diferente a la que estamos ejecutando en Dev? ¿Es la traza de pila incluso significativa?¿Hay buenos libros para depurar en Linux o Solaris? Algo orientado a un ejemplo sería genial. Estoy buscando ejemplos de la vida real de averiguar por qué se bloqueó una rutina y cómo el autor llegó a una solución. Algo más en el nivel intermedio a avanzado sería bueno, ya que he estado haciendo esto por un tiempo. Algún montaje sería bueno también.

Este es un ejemplo de un choque que nos obliga a decirle al cliente que obtenga un -g ver. del binario:

Program terminated with signal 11, Segmentation fault.
#0  0xffffe410 in __kernel_vsyscall ()
(gdb) where
#0  0xffffe410 in __kernel_vsyscall ()
#1  0x00454ff1 in select () from /lib/libc.so.6
...
<omitted frames>

Idealmente, me gustaría resolver por qué exactamente se bloqueó la aplicación. Sospecho que es un problema de memoria pero no estoy 100% seguro.

La depuración remota no está estrictamente permitida.

Gracias

Respuestas a la pregunta(4)

Su respuesta a la pregunta