2011-08-17 3 views
14

J'ai un fichier objet ELF. Je veux savoir quel type d'informations de débogage il contient. Il a été compilé avec le compilateur Diab (source C) pour l'architecture PPC. Je suis assez sûr qu'il a été construit avec des symboles de débogage.Comment savoir quel type d'informations de débogage se trouve dans un fichier objet ELF?

J'ai essayé d'extraire l'information de débogage avec dwarfdump mais je ne fonctionne pas donc je suppose que l'information de débogage n'est pas de type DWARF. L'utilisation de objdump pour afficher les informations de débogage est vide.

$ objdump -g file.elf 
file.elf:  file format elf32-powerpc 

peut-il que ce fichier ELF ne contient pas des informations de débogage, même si le fichier ELF a appelé les sections .debug_sfnames, .debug_srcinfo et .debug.srcinfo? Ou est les informations de débogage stockées dans un format que objdump ne peut pas gérer?

+1

Pouvez-vous poster le fichier quelque part? –

+3

essayez aussi avec "objdump -W file.elf", juste au cas où. Je pense que objdump -g ne sera pas heureux, sauf si l'info est STABS – NullPointer

+1

Ok, je l'ai compris. Eh bien, je ne sais toujours pas quel type d'informations de débogage contient le fichier ELF, mais j'ai trouvé la commande pour l'extraire. ddump2 -D elffile fait l'affaire. Je pense que ddump2 appartient à la chaîne d'outils fournie avec le compilateur diab. – johnj33

Répondre

6

Vous devriez probablement utiliser le nm

L'utilitaire nm doit afficher des informations symboliques figurant dans le fichier objet , un fichier exécutable ou d'une bibliothèque-fichier objet nommé par fichier. Si aucune information symbolique n'est disponible pour un fichier d'entrée valide, l'utilitaire nm doit signaler ce fait, mais ne considère pas cela comme une condition d'erreur .

Vous pouvez également utiliser des outils tels que ldd pour voir quelles bibliothèques sont requises par un binaire.

3

Il ne semble pas que quelqu'un ait jamais répondu à votre question actuelle, qui est: comment déterminer par programme la saveur des symboles de débogage présents dans un binaire ELF donné. Autant que je sache, ceci n'est pas donné explicitement dans ELF; cependant, il peut être déduit par la présence de noms de section spécifiques dans le fichier ELF. Par exemple: une section nommée ".debug_info" implique DWARF2 ou mieux, alors que ".stab" implique des stabs. Une recherche rapide de vos ".debug_sfnames" suggère DWARF1. (Je ne sais pas pourquoi votre « dwarfdump » n'a pas identifié que ... peut-être votre dwarfdump est pour NAINS nouveaux et jetai rétrocompatibilité?)

3

Dans GNU/Linux:

$ readelf --debug-dump=info /absolute/path/to/file | grep "Version" | uniq 

Retours la version des symboles DWARF utilisée dans le binaire.

Questions connexes