2009-10-28 21 views
1

Lorsque je construis des paquets sur Gentoo. J'obtiens cet avertissement que le drapeau '-ggdb3' peut 'casser des paquets.Comment les symboles de débogage GDB peuvent-ils 'rompre les paquets'?

Je n'ai pas encore trouvé une instance de quand cela est vrai. Bien que j'ai trouvé du code qui a fonctionné sous différents paramètres d'optimisation, c'est différent d'inclure des symboles de débogage. Est-ce que certains pourraient fournir un exemple de code qui compilerait sans déboguer des symboles et ne compilerait pas (ou ne se tromperait pas d'une autre manière à l'exécution) avec eux?

Répondre

1

Dans les «vieux jours», j'ai construit un système Linux à partir de Scratch tout en laissant le débogage sur chaque binaire. Bien sûr, l'installation était significativement plus grande, l'utilisation de la mémoire n'était pas idéale, mais je n'ai jamais eu aucun problème, que ce soit lors de la compilation ou de l'exécution ultérieure.

Il est difficile de prouver un négatif, et on ne peut pas le faire par anecdote, mais une année de fonctionnement en tant que second serveur de bureau/jouet me conduirait à conclure que ce n'est vraiment pas un problème.

Je pense que l'indicateur que vous obtenez est l'avertissement standard qu'un paquet donnera dans Gentoo si vous définissez des indicateurs USE avec lesquels il n'a pas été testé, ou avec lesquels il n'est pas vraiment destiné à être installé. Tant que vous savez ce que le drapeau est --- et dans ce cas, vous semblez --- et vous ne le placez pas dans un cadre "critique" (c.-à-d., Vous serez blâmé si quelque chose tourne mal) semble sûr ignorer ces avertissements.

+0

laisser -Werror dans votre CFLAGS ne cause pas de fin de tracas, mais c'est une autre histoire ;-) –

+0

@Chris Je suis heureux sur FreeBSD maintenant, parce que j'ai trouvé que Gentoo causes pas de fin de tracas, mais c'est une autre histoire aussi ...;) – Dmitri

1

Je n'ai jamais eu un seul test échoué (ou beaucoup moins, une rupture de paquet) en raison de symboles de débogage inclus. J'ai seulement été mordu par des bogues d'optimisation en traitant PPC.

Cependant, vous devez considérer ce que vous construisez. Si l'exécutable va être copié dans quelque chose comme un initrd, vous voulez généralement qu'il soit déshabillé (ou compilé sans les symboles de débogage), en particulier si un lien statique.

+0

Qu'est-ce que ppc? Vous ne voulez pas dire «payer par clic», n'est-ce pas? –

+0

@Chris Huang-Leaver: http://refspecs.freestandards.org/LSB_1.3.0/PPC32/spec/book1.html (c.-à-d. PowerPC ... quelque chose que ces gens intelligents chez Motorola a inventé)? –

+0

@tinkertim IC, le seul que je peux penser est ce http://stackoverflow.com/questions/768588/ qui je pense est un problème de compilateur avec Solaris. –

-2

Parfois, lorsque vous activez les symboles de débogage, cela modifie en réalité le code généré par le compilateur, auquel cas il est toujours possible de passer du "code correct" au "code incorrect".

Je ne sais pas ce que les changements spécifiques "-ggdb3" permettent, mais c'est peut-être ce dont vous êtes averti.

+0

Ce n'est jamais le cas pour GCC, AFAIK – Hasturkun