Vargas : options de débogage du compilateur C/C++
Dans une phase de débogage, les options suivantes peuvent être d'une aide
précieuse :
- -g : génère une table des symboles (numéro de
ligne, variables, ...) qui pourra être exploitée par un débogueur par
la suite. Cette option conserve le niveau d'optimisation
demandé.
- -qnooptimize : permet d'inhiber toute
optimisation.
- -qcheck=bounds : vérifie si l'on n'adresse pas un
tableau en dehors de ses bornes (bounds checking).
- -qcheck=nullptr : vérifie la validité des adresses
contenues dans les variables de type pointeur.
- -qcheck=divzero : permet de détecter les divisions
entières par zéro.
- -qcheck=all : regroupe les 3 options ci-dessus.
- -qfloat=nans : permet la mise en évidence à
l'exécution des opérations portant sur des valeurs invalides NaN.
- -qflttrap : permet de détecter les exceptions
(overflow, underflow, division par zéro, opération
invalide).
- -qheapdebug : remplace les fonctions standards de gestion dynamique de la mémoire (
calloc, malloc, new,...) et certaines fonctions de manipulation de chaînes de caractères (strcat, strcpy,...) par des fonctions réalisant certaines vérifications (pré-allocation de la mémoire, réutilisation de mémoire libérée,...).
- -qkeepparm : oblige le compilateur à conserver dans le stack les valeurs des arguments d'appel (certaines optimisations peuvent changer cela). Celles-ci seront ainsi récupérables dans n'importe quel débogueur.
Pour exemple, pour utiliser toutes les options décrites :
vargas : cc -qnooptimize -g -qcheck=all
-qflttrap=overflow:underflow:zerodivide:invalid:enable
-qfloat=nans -qheapdebug -qkeepparm source.c
vargas : xlC -qnooptimize -g -qcheck=all
-qflttrap=overflow:underflow:zerodivide:invalid:enable
-qfloat=nans -qheapdebug -qkeepparm source.C
Voici aussi un modèle de Makefile
avec des options supplémentaires.
Voir aussi le paragrahe : Outils de débogage
© CNRS - IDRIS, 13/01/2012