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
2. Más información en documentación de libtool