65 votes

gcc -g : que va-t-il se passer

Cette question m'a été posée en entretien.

ils m'ont demandé comment générer un fichier de vidage de mémoire avec lequel je peux déboguer. puis je l' ai dit que , avec -g drapeau en gcc , nous pouvons le faire.

alors ils m'ont demandé ce que fait exactement ce -g au compilateur.

J'ai dit (probablement une mauvaise réponse) qu'il ouvrira tous les symboles du fichier de base qui peuvent être utilisés pour le débogage.

quelqu'un peut-il me dire à quoi ça sert exactement ?

12voto

Axel Points 6352

L'indicateur -g indique au compilateur de générer des informations de débogage. Cela n'a aucun impact sur la génération ou non d'un fichier core. Sur la plupart des systèmes de type Unix, cela peut être configuré à l'aide de la commande ulimit.

7voto

Erik Points 38942

L'indicateur gcc -g indique à gcc de générer et d'intégrer les informations de débogage. ulimit -c est utilisé pour activer la génération de fichiers de base. Vous pouvez avoir l'un ou l'autre sans l'autre.

3voto

JeremyP Points 46808

-g ajoute des informations de débogage (noms de variables, numéros de ligne, etc.) au fichier exécutable. Cela fait partie de ce que vous devez faire pour être en mesure de donner un sens au fichier de base.

http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html#Debugging-Options

2voto

Steven Wong Points 71

Si vous ne mettez pas l'indicateur -g, vous ne pouvez pas appeler list dans gdb pour lister à quoi ressemble le code source. il affichera "Aucune table de symboles n'est chargée. Utilisez la commande "fichier"."

De plus, si vous tapez info func ou info frame, info locals dans gdb, sans -g, il n'affichera pas le type de données de retour et ses arguments, fondamentalement aucune traduction de l'instruction en variable (mappage à partir de la table des symboles).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X