Je crée un programme C que j'ai l'intention de courir sur un processeur de bras dans le délai proche. Je veux mesurer la quantité de mémoire que j'utilise avec mes variables globales tout en ignorant la taille de la pile / du tas. Existe-t-il un moyen d'obtenir la GCC de le jeter à l'heure de la compilation ou de récupérer ces informations à partir du binaire compilé? P>
3 Réponses :
La suite GNU Binutils contient un programme appelé "Taille", qui est le moyen le plus simple d'obtenir les données dont vous avez besoin - ou au moins une approximation raisonnable. Pour un programme typique (dans ce cas, pas un petit embarqué), la sortie peut ressembler à:
text data bss dec hex filename 332268 2200 19376 353844 56634 test-directory/add
Un excellent moyen de voir où se passe votre mémoire est de regarder la carte de la liaison. Une carte de liaison est un fichier généré par la liaison et de détail tous les emplacements de mémoire du programme. Vous pouvez voir une allocation de mémoire sur un symbole par la base de symboles pour les variables globales ainsi que le code. J'ai utilisé des cartes de liaison dans le passé pour des projets qui ont des exigences de mémoire serrées. Ils facilitent identifier des problèmes tels que des tampons de mémoire globaux qui prennent beaucoup d'espace. P>
Ajoutez cette option à la ligne de commande GCC pour générer la carte de la liaison: P>
-wl, -map = sortie.map p>