\section{Debug}

La structure de {\cesam2k} en modules permet une v�rification
efficace de la syntaxe par le compilateur mais aussi de limiter les recompilations
aux modules dans lequels des erreurs ont �t� signal�es.

Quand une erreur est d�tect�e en cours d'ex�cution \cesam2k �dite un
message facilitant sa localisation.
{\embf Exemple:} un message tel que {\tt "sortie depuis cesam 7"} indique que l'arr�t
a �t� provoqu� � l'instruction {\tt CALL sortie('cesam 7')} de la routine
{\tt cesam.f}. Il convient de s'y reporter pour analyser les raisons de
la "sortie".

Pour les cas simples, la biblioth�que de
debug {\tt libcesam2k-dbg.a} et l'ex�cutable {\tt cesam2k-dbg.out} ont �t� cr��s
lors de la premi�re phase de l'installation, \cfparagr{sec:Makefile}.
Pour une recherche plus approfondie des dispositifs de debug sont dispos�s dans les
routines les plus sensibles.

\noi{\embf Exemple} : un bug est suspect� dans la routine {\tt static\_m13}
du module {\tt mod\_static}.
\begin{enumerate}
\item Dans le directory {\tt SOURCE}, inclure les corrections de debug dans
les routines concern�es.
\item Dans le programme {\tt test\_cesam.f} du directory de
travail\footnote{S'il n'y a pas �t� plac� par le script {\tt create\_evol\_space},
reprendre {\tt test\_cesam.f} du sous-directory {\tt EXPLOIT}.}.
actualiser le chemin de la SOURCE\footnote{utiliser le chemin complet car ni
{\em tilde} ni {\em \$HOME} ne sont reconnus par F95.} et d�cocher les "c" en colonne 1
des lignes correspondants aux modules suppos�s �tre concern�s par le bug. Pour le pr�sent
exemple:
\begin{tt}\begin{verbatim}

c       INCLUDE '/home/pierre/CESAM2k/SOURCE/mod_numerique.f'
c       INCLUDE '/home/pierre/CESAM2k/SOURCE/mod_donnees.f'
c       INCLUDE '/home/pierre/CESAM2k/SOURCE/mod_variables.f'
c       INCLUDE '/home/pierre/CESAM2k/SOURCE/mod_etat_saha.f'
c       INCLUDE '/home/pierre/CESAM2k/SOURCE/mod_etat.f'
c       INCLUDE '/home/pierre/CESAM2k/SOURCE/mod_opa.f'
c       INCLUDE '/home/pierre/CESAM2k/SOURCE/mod_conv.f'
c       INCLUDE '/home/pierre/CESAM2k/SOURCE/mod_atm.f'
c       INCLUDE '/home/pierre/CESAM2k/SOURCE/mod_nuc.f'
c       INCLUDE '/home/pierre/CESAM2k/SOURCE/mod_bp_for_alecian.f'
c       INCLUDE '/home/pierre/CESAM2k/SOURCE/mod_evol.f'
        INCLUDE '/home/pierre/CESAM2k/SOURCE/mod_static.f'  <--------- bug?
c       INCLUDE '/home/pierre/CESAM2k/SOURCE/mod_cesam.f'
c       INCLUDE '/home/pierre/CESAM2k/SOURCE/mod_exploit.f'

c*******************************************************************

	PROGRAM test_cesam

	USE mod_cesam

	IMPLICIT NONE

	CALL cesam

	STOP

	END PROGRAM test_cesam

\end{verbatim}\end{tt}


\item Cr�er localement l'ex�cutable de debug en saisissant au choix :
\centerline{{\tt make -Bf Make\_exe PRG=test\_cesam {\rm}} ou {\tt exe2k-dbg test\_cesam}}

\item Ex�cuter la recherche des dysfonctionnements en lan�ant l'ex�cutable:
\centerline{\tt test\_cesam.out}
\end{enumerate}
\noi Au link, le fichier {\tt mod\_static.mod}, cr�� localement, sera utilis� et
non pas celui de la {\tt SOURCE}.
Lors de l'ex�cution, les instructions de debug, alors prises en compte,
permettront de d�tecter le d�faut.

%{\tt mod\_repl mod\_static}, remplacera le module {\tt mod\_static} dans la
% biblioth�que et recr�era l'ex�cutable {\tt cesam2k.out}.
% Ainsi, aucun fichier du sous-directory {\tt SOURCE} n'aura �t� d�plac�.

Une fois la difficult� identifi�e, dans la {\tt SOURCE} corriger les routines
concern�es puis mettre � jour les biblioth�ques et les ex�cutables
conform�ment au {\tt README\_installation} de la {\tt SOURCE}.

 Localement, supprimer les fichiers cr��s localement pour le debug. Pour l'exemple, le
 module {\tt mod\_static.mod} ainsi que l'ex�cutable {\tt test\_cesam.out} d�sormais inutiles mais sources potentielles de dysfonctionnements.
