Lorsque vous exécutez le objdump --syms
je vois beaucoup plus que " aucun symbole "dans la sortie (au moins, pour objets du noyau ).
Pour vérifier s'il y a des informations de débogage à l'intérieur de l'objet noyau, vous pouvez ajouter ce qui suit à la fin de l'objet objdump
commandement : | grep debug
.
Si cette chaîne est trouvée, vous savez que l'objet du noyau contient des informations de débogage. Sinon, il s'agit d'un objet noyau "propre".
Exemple d'un module de noyau que j'ai compilé sans des informations de débogage :
geertvc@jimi:~/mystuff/kernels/linux-3.12.6$ objdump --syms ./modules/lib/modules/3.12.6/kernel/drivers/i2c/busses/i2c-at91.ko | grep debug
Exemple de ce même module de noyau que j'ai compilé avec des informations de débogage :
geertvc@jimi:~/mystuff/kernels/linux-3.12.6$ objdump --syms ./modules/lib/modules/3.12.6/kernel/drivers/i2c/busses/i2c-at91.ko | grep debug
00000000 l d .debug_frame 00000000 .debug_frame
00000000 l d .debug_info 00000000 .debug_info
00000000 l d .debug_abbrev 00000000 .debug_abbrev
00000000 l d .debug_loc 00000000 .debug_loc
00000000 l d .debug_aranges 00000000 .debug_aranges
00000000 l d .debug_ranges 00000000 .debug_ranges
00000000 l d .debug_line 00000000 .debug_line
00000000 l d .debug_str 00000000 .debug_str
00000010 l .debug_frame 00000000 $d
Comme vous pouvez le voir, la première sortie ne renvoie rien, tandis que la deuxième sortie renvoie des lignes avec debug
en elle.
Remarque : dans mon cas, le file
m'a renvoyé "non dépouillé" dans les deux cas de débogage et de non-débogage. Cependant, la différence de taille de l'objet noyau était remarquable :
- environ 16k sans information de débogage
- environ 137k avec les informations de débogage
Il est clair que cette dernière version contenait des informations de débogage.
Ma question : est-ce que le file
commande fiable dans de tels cas ? D'après mon expérience, je me fie à la commande objdump --syms ... | grep debug
commandement.