pragma Debug / projet GPR
Thomas De Contes via Ada-france <[email protected]> Mon, 5 Jul 2021 19:39:50 +0200
| Newsgroups | gmane.comp.lang.ada.france |
|---|---|
| Message-ID | <[email protected]> |
Bonjour :-)
Pour améliorer le débogage, j'ai ajouté un "pragma Debug" à la procédure Debug l 64 :
http://svn.savannah.gnu.org/viewvc/rapid/branches/gtkada-2.24/src/tki/mcc_tki/mcc-msg.adb?revision=224&view=markup
J'ai fait une variable Build_Mode, qui marche comme proposé par la doc sur les scénarios :
http://svn.savannah.gnu.org/viewvc/rapid/branches/gtkada-2.24/bin/rapid.gpr?revision=229&view=markup
Là j'avais oublié le "-gnata", je l'ai rajouté dans Develop_Debug_Modes_Compiler_Switches.
1
Est ce que ce "pragma Debug" est la meilleure chose à faire ?
J'ai vu que c'est un pragma du compilateur et pas du langage, est ce que le langage prévoit quelque chose qui me serais utile à cet endroit ?
2
Je voudrais recompiler "mcc-msg.adb" à chaque fois que je change de mode (mais pas tout, seulement ce fichier).
J'ai tenté :
package Builder is
for Default_Switches ("Ada") use Builder_Switches;
for Switches ("mcc-msg.adb") use Builder_Switches & ("-s");
end Builder;
mais ça ne marche pas, parce qu'en fait on ne peut indiquer que les fichiers "principaux" (ou "de tête", c'est peut-être une traduction plus appropriée ?).
C'est bizarre, parce que ça ne dit pas comment sont traités les sources communes à des "principaux" à qui on donne des options différentes.
Par ailleurs, je comprend cette restriction pour certaines options du constructeur, mais en l'occurrence je ne vois rien qui empêche d'appliquer celle ci différemment pour chaque fichier source.
Mais peut-être qu'on peut déjà le faire, avec un autre attribut du projet GPR que je ne connais pas encore ?
3
Est il possible de ne pas re-fabriquer tous les exécutables quand on change de mode, s'il n'y a que "mcc-msg.adb" qui est re-compilé, et de ne le faire que si du code a changé ?
4
Je voudrais bénéficier des assertions en mode Develop, mais les messages de débogage commencent déjà à m'agacer, j'aimerais ne les avoir qu'en mode Debug.
Je crois que "-gnata" n'est pas divisible, mais c'est pas grave : si je met des assertions dans "mcc-msg.adb", je saurai que je dois passer en mode Debug pour les tester.
Je crois savoir quoi faire, et ça devrais marcher :
package Compiler is
for Default_Switches ("Ada") use Compiler_Switches;
for Switches ("mcc-msg.adb") use Compiler_Switches_for_MM;
end Compiler;
où Compiler_Switches_for_MM est Compiler_Switches sans "-gnata" quand on est en mode Develop.
Mais ça me fait jongler avec Develop_Debug_Modes_Compiler_Switches, Develop_Mode_Compiler_Switches, et leur version dédiée à "mcc-msg.adb", et ça rend le tout beaucoup moins lisible.
L'idéal, ça serais de pouvoir faire des opérations sur les ensembles (union, intersection, complémentaire).
Est ce que je peux faire mieux que ce jonglage avec ce qui existe aujourd'hui ?
5
Pendant que j'y suis (je n'ose pas faire un message dédié, ai-je tord ?) :
Est il possible d'avoir les avantages de "-gnatv" sans ses inconvénients ?
Ses inconvénients, c'est tout ce que ça affiche en supplément (par rapport à pas d'option) quand il n'y a rien à signaler.
--
RAPID maintainer
http://savannah.nongnu.org/projects/rapid/
_______________________________________________
Ada-france mailing list
[email protected]
https://mail.ada-france.org/cgi-bin/mailman/listinfo/ada-france