Dans une phase de débogage, les options suivantes peuvent être d'une aide précieuse :
-g (option activée par défaut à l'IDRIS)
génère une table des symboles (numéros de ligne, variables, ...) qui pourra
être exploitée par un débogueur par la suite. Cette option conserve le
niveau d'optimisation demandé.-qfullpath
inscrit les chemins d'accès aux fichiers source et d'include dans les fichiers
objets (doit être combinée avec -g). Elle permet au débogueur de
trouver automatiquement les fichiers source.-qnooptimize
permet d'inhiber toute optimisation.-qoptdebug
permet de conserver le niveau d'optimisation. Pour chaque fichier source,
un fichier (ayant l'extension .optdbg) est généré. Il contient un pseudocode
optimisé pouvant être lu par un débogueur.-qdebug=diagnostic
affiche des informations sur l'utilisation de la double FPU.-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:spnans
permet de détecter l'apparition de valeurs invalides NaN lors des conversions
de double précision en simple précision.-qflttrap=overflow:underflow:zerodivide:invalid:enable -qarch=450
permet de détecter les exceptions (overflow, underflow,
division par zéro, opération invalide). Il faut obligatoirement spécifier
-qarch=450 (avec l'architecture 450D, la double unité arithmétique
flottante ne génère pas d'exceptions).-qsigtrap
intercepte le signal SIGTRAP émis suite à une exception ou à un débordement
de tableau et interrompt l'exécution avec impression d'une traceback
(voir aussi l'option -g).-qdbxextra
inclut toutes les définitions de type enum, struct, union
dans les fichiers objet pour qu'elles puissent être exploitées par un
débogueur (doit être combinée avec -g).-qfullpath
inscrit les chemins d'accès aux fichiers source et d'include dans les fichiers
objets (doit être combinée avec -g). Elle permet au débogueur de
trouver automatiquement les fichiers source.-qinitauto=7FBFFFFF
initialise au préalable toutes les variables temporaires à NaNs (ou à
zéro si -qinitauto seul).-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.Il existe aussi une option -qlanglvl
pour vérifier la conformité du source à une norme C donnée. Par exemple
-qlanglvl=stdc99 pour la norme standard ISO C99.
Par exemple, pour utiliser toutes les options décrites :
Babel : mpixlc_r -g -qsigtrap -qoptdebug -qcheck=all -qinitauto=7FBFFFFF \
-qflttrap=overflow:underflow:zerodivide:invalid:enable -qarch=450 \
-qfloat=nans:spnans -qkeepparm -qdbxextra -qfullpath source.c
Babel : mpixlcxx_r -g -qqoptdebug -qcheck=all -qinitauto=7FBFFFFF \
-qflttrap=overflow:underflow:zerodivide:invalid:enable -qarch=450 \
-qfloat=nans:spnans -qkeepparm -qdbxextra -qfullpath source.C