J'ai des bibliothèques compilées sur Linux x86 et je veux déterminer rapidement si elles ont été compilées avec des symboles de débogage.
Réponses
Trop de publicités?L'suggéré de commande
objdump --debugging libinspected.a
objdump --debugging libinspected.so
me donne toujours le même résultat au moins sur Ubuntu/Linaro 4.5.2:
libinspected.a: file format elf64-x86-64
libinspected.so: file format elf64-x86-64
peu importe si les archives/bibliothèque partagée a été construit avec ou sans -g
option
Ce qui m'a vraiment aidé à déterminer si -g
a été utilisé est readelf outil:
readelf --debug-dump=decodedline libinspected.so
ou
readelf --debug-dump=line libinspected.so
Cela permettra d'imprimer un ensemble de lignes composées de nom de fichier source, le numéro de ligne et l'adresse si de telles informations de débogage est inclus dans la bibliothèque, sinon ça va imprimer rien.
Vous pouvez passer n'importe quelle valeur que vous trouverez nécessaire pour --debug-dump
option au lieu d' decodedline
.
Si vous utilisez Linux, utilisez 'objdump --debugging'. Il devrait y avoir une entrée pour chaque fichier objet de la bibliothèque. Pour les fichiers objet sans symboles de débogage, vous verrez quelque chose comme:
objdump --debugging libvoidincr.a
In archive libvoidincr.a:
voidincr.o: file format elf64-x86-64
S'il y a des symboles de débogage, la sortie sera beaucoup plus détaillée.