2015-08-19 2 views
0

Notre système de construction génère des fichiers exécutables très volumineux. De nombreuses tailles de l'exécutable sont des informations de débogage. donc la bande peut réduire la taille exécutable notamment. mais si toutes les informations de débogage sont supprimées, le débogage sera difficile. Donc, je veux savoir, est-il possible de supprimer uniquement les informations de débogage locales? telles que les variables locales, les paramètres de la fonction. J'ai besoin de garder la relation entre le nom de la fonction et la ligne de fichier pour activer le backtrace gdb et la commande haut/bas.Puis-je supprimer uniquement les informations de débogage pour les symboles locaux à partir de ELF?

Merci beaucoup.

Répondre

-1

Essayez bande --strip-debug

Essayez aussi

-g 
    -S 
    -d 
2

Je dois garder la relation entre le nom de la fonction et la ligne de fichier pour permettre backtrace gdb et le travail de commande haut/bas.

Vous vous trompez: backtrace et up/down beau travail sans informations de débogage du tout. Si backtrace est tous les vous avez besoin, alors simplement construire sans drapeaux de débogage, et tout ira bien.

Si vous avez vraiment besoin d'informations de fichiers et si vous compilez avec une gcc récente (ou g++) et utiliser DWARF, vous voudrez peut-être:

 -gsplit-dwarf 
     Separate as much dwarf debugging information as possible into a 
     separate output file with the extension .dwo. This option 
     allows the build system to avoid linking files with debug 
     information. To be useful, this option requires a debugger 
     capable of reading .dwo files. 

Note: cela laisse encore le fichier/informations de ligne dans le binaire principal, mais laisse tout le reste dans les fichiers .dwo.