Le ’coding style’ (suite)
Commentez raisonnablement et lisiblement,
Bien décrire les arguments des fonctions
Prévoir l’exploitation par un outil de documentation automatique (ex: ROBOdoc)
Eviter d’indiquer le fonctionnemement du code dans les commentaire.
Eviter de paraphraser le code
Des bugs classiques
Les débordements de tableau
Les problèmes d’initialisation (généralement signalés par le compilateur)
Les problèmes liés aux conversions implicites dans les expressions mathématiques
Les typos :
Commentaires mal fermés :
a=b ; / ∗ t h i s i s a bug ∗/
c=d ; / ∗ c=d w i l l never happen
Confusions entre test et assignation en C
i f ( a=b ) c ; / ∗ a always equals b ∗/
Eviter les structures obsolètes du Fortran
Banir le typage implicite, utilisez implicite none
Eviter les instructions do label…continue et préférer les boucles F90 (mais universelles): do…enddo et dowhile…enddo
Eviter les if logiques et toute les structures utilisant des
étiquettes. Utilisez la structure if…then…endif
Oublier les instructions archaïques goto, continue, entry, equivalence
Les options de compilation
GCC
-Wall Active tous les avertissements standards
-Wextra Encore d’autres options d’avertissement gfortran
-Wall Active tous les avertissements standards
-Wimplicit Avertissement sur les typages implicites
ifort
-warn all Active tous les avertissements standards
Qu’est ce qu’un débogueur?
Le débogueur est destiné à aider le programmeur à détecter des bogues dans un programme.
Il permet en général d’exécuter le programme tout en permettant de :
exécuter le programme pas à pas
contrôler l’état de la mémoire et des variables
agir sur la mémoire
définir des points d’arrêts
…
Panorama des debugeurs du marché
Sous Windows
(Microsoft) Visual Studio Debugger (codeview)
Sous Linux et unix
gdb, dbx, ddd
(Intel) IDB syntaxe compatible dbx et gdb
Purify, valgrind
Débugueurs parrallèles
(Totalview technologie) Totalview
(Allinea) Distributed Debugging Tool (DDT)
(Portland) pgdbg
(Microsoft) Visual studio
1 Les bonnes pratiques
2 Débuggeur
Présentation
GDB
DDD
Valgrind