Nain Erreur: mauvaise version de la compilation de l'unité de tête (4, devrait être de 2)
Un objet partagé a été construit sur un Linux RedHat, et alors que tout le code a été compilé en debug, le débogueur (gdb) a refusé de charger les symboles et émis une erreur comme dans:
...
GNU gdb Fedora (6.8-37.el5)
...
This GDB was configured as "x86_64-redhat-linux-gnu"...
Dwarf Error: wrong version in compilation unit header (is 4, should be 2) [in module libgrokf.so]
Avec cette erreur, je ne pouvais pas obtenir des points de rupture pour déclencher dans toute fonction, ni voir la bonne trace de la pile. J'ai recompilé l'ensemble du projet, mais rien n'y fit. Je sais qu'à un certain moment dans le passé, il n'y a pas de problème de débogage de ce module.
Ce qui est à l'origine de ce problème?
Vous devez vous connecter pour publier un commentaire.
Comme il arrive, le module qui ne pouvait pas débogage a été principalement construit à partir des sources, sauf pour un peu de "externes" de l'objet fichier someextcode.o qui a été fourni par une 3ème partie.
Dans l'enquête sur le problème, il a été constaté que la someextcode.c est compilé avec l'-g3 drapeau qui, apparemment, des lieux NAIN version de 4 dans l'unité de compilation d'en-tête. Changer d'-g résolu le problème.
Malheureusement, il apparaît un problème avec un seul module peut briser le debug-capacité de la totalité d'un objet partagé (.donc, sans donner une indication claire de la racine du problème.
Le problème, c'est que votre version de
gdb
ne prend pas en charge laDWARF
version utilisée dans l'un de vos fichiers binaires.La solution: mise à Jour
gdb
ou de compiler vos fichiers en utilisant un autre debug format (DWARF2
fonctionne surgdb
6).J'ai récemment eu ce problème avec
freeBSD
etnasm
,nasm
compilation des binaires avecDWARF3
et lagdb
livré avecfreeBSD 9.1
ne l'accepte pas.J'espère que cette réponse aide à toute personne ayant un problème similaire 😛
Les options de débogage pour GCC
Ma question ai résolu en choisissant la bonne version de gdb pour déboguer. Plus tôt, j'ai été en utilisant le gdb 7.0... et quand j'ai commencé à utiliser le gdb de la version 7.10, j'ai été en mesure de déboguer mon application.