Cuando vamos a depurar un ejecutable que utiliza una librería generada con libtool[1], es posible que nos encontremos con el siguiente error:

$ gdb ./tests-mylib
"tests-mylib": not in executable format: File format not recognized
libmylib.so

es una librería dinámica generada con libtool.

tests-mylib

es un ejecutable que utiliza la librería mylib.

Para los que estéis pensando que se me ha olvidado poner la opción de compilación -g, este error ocurre aunque utilicemos -g.

El error es debido a que estamos intentando ejecutar un script generado por libtool, es una envoltura sobre el programa real, para facilitar la ejecución de éste [2].

Para poder depurar nuestro programa de prueba tests-mylib
libtool --mode=execute gdb tests-mylib

1. Herramienta que pertenece a la Autotools usada para crear bibliotecas de software portables.
2. Más información en documentación de libtool