Bonjour,
Voici mon problème. J'avais un exécutable compilé sous Linux avec codebloc. J'ai modifié la chaine de compilation pour générer les binaires avec CMAKE.
La compilation et l'exécution est OK. L'application est configuré pour générer un core dump lors d'un crash. J'analyse ce core avec gdb en exécutant la commande :
gdb monapplication --core=core.1222
Depuis que j'utilise CMAKE pour la génération, je peux analyser ce coredump uniquement sur la machine sur laquelle a été généré le binaire. Si j'essaie sur une autre machine (même OS RedHat 5.6) j'ai l'erreur suivante:
BFD: Warnig: /home/.../core.1222 is truncated: expected core file size >= 307032064, found: 307027968
Ensuite "info threads" dans gdb me retourne ?? à la place du nom des fonctions. Comme s'il manquait les symbols.
La commande nm retourne bien la liste des symboles
Dans mon CMakeLists.txt j'ai :
1 2 3 4 5 6 7 8
|
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ../bin )
SET(CMAKE_USE_RELATIVE_PATHS ON)
SET(CMAKE_VERBOSE_MAKEFILE ON)
SET(CMAKE_CXX_COMPILER g++)
SET(CMAKE_BUILD_STRIP FALSE)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g") |
La commande g++ avec CMAKE est sensible identique à celle que j'avais précédemment avec codeblocs sauf l'option -o
avec cmake:
[CODE] -o CMakeFiles/monappilcation.dir/home/.../main.cpp.o
avec codeblocs:
-o obj/Release/.../main.cpp.o
Auriez vous une idée comment retrouver mes symboles avec CMAKE sur un autre machine que celle qui a généré le binaire?
Par avances merci.
Partager