version 1.11, 2010/05/24 10:58:30
|
version 1.12, 2010/06/24 09:21:43
|
Line 285 effacement_pile_systeme(struct_processus
|
Line 285 effacement_pile_systeme(struct_processus
|
return; |
return; |
} |
} |
|
|
|
|
|
/* |
|
================================================================================ |
|
Procédure d'affichage de la pile système |
|
================================================================================ |
|
Entrée : |
|
-------------------------------------------------------------------------------- |
|
Sortie : |
|
-------------------------------------------------------------------------------- |
|
Effets de bord : néant |
|
================================================================================ |
|
*/ |
|
|
|
void |
|
trace(struct_processus *s_etat_processus, FILE *flux) |
|
{ |
|
struct_liste_pile_systeme *l_element_courant; |
|
|
|
integer8 i; |
|
|
|
l_element_courant = (*s_etat_processus).l_base_pile_systeme; |
|
i = 0; |
|
|
|
while(l_element_courant != NULL) |
|
{ |
|
i++; |
|
l_element_courant = (*l_element_courant).suivant; |
|
} |
|
|
|
l_element_courant = (*s_etat_processus).l_base_pile_systeme; |
|
flockfile(flux); |
|
|
|
if ((flux == stderr) || (flux == stdout)) |
|
{ |
|
fprintf(flux, "+++Backtrace\n"); |
|
} |
|
|
|
while(l_element_courant != NULL) |
|
{ |
|
fprintf(flux, "%d : D=", i--); |
|
|
|
fprintf(flux, ((*l_element_courant).creation_variables_statiques |
|
== d_vrai) ? "1" : "0"); |
|
fprintf(flux, ((*l_element_courant).creation_variables_partagees |
|
== d_vrai) ? "1" : "0"); |
|
fprintf(flux, ((*l_element_courant).arret_si_exception == d_vrai) |
|
? "1" : "0"); |
|
fprintf(flux, ((*l_element_courant).evaluation_expression == d_vrai) |
|
? "1" : "0"); |
|
|
|
fprintf(flux, " F=%c%c L=%lu ", |
|
((*l_element_courant).clause == ' ') ? '-' : |
|
(*l_element_courant).clause, |
|
((*l_element_courant).type_cloture == ' ') ? '-' : |
|
(*l_element_courant).type_cloture, |
|
(*l_element_courant).niveau_courant); |
|
|
|
if ((*l_element_courant).retour_definition == 'Y') |
|
{ |
|
fprintf(flux, "RTRN "); |
|
|
|
if ((*l_element_courant).origine_routine_evaluation == 'Y') |
|
{ |
|
fprintf(flux, "EVL "); |
|
|
|
if ((*l_element_courant).adresse_retour != 0) |
|
{ |
|
fprintf(flux, "P=%lu", (*l_element_courant) |
|
.adresse_retour); |
|
} |
|
} |
|
else |
|
{ |
|
fprintf(flux, "SEQ "); |
|
|
|
if ((*l_element_courant).pointeur_objet_retour != NULL) |
|
{ |
|
fprintf(flux, "A=%X", (*l_element_courant) |
|
.pointeur_objet_retour); |
|
} |
|
} |
|
} |
|
else |
|
{ |
|
fprintf(flux, "NONE "); |
|
|
|
if ((*l_element_courant).origine_routine_evaluation == 'Y') |
|
{ |
|
fprintf(flux, "EVL "); |
|
|
|
if ((*l_element_courant).adresse_retour != 0) |
|
{ |
|
fprintf(flux, "P=%lu", (*l_element_courant) |
|
.adresse_retour); |
|
} |
|
} |
|
else |
|
{ |
|
fprintf(flux, "SEQ "); |
|
|
|
if ((*l_element_courant).pointeur_objet_retour != NULL) |
|
{ |
|
fprintf(flux, "A=%X", (*l_element_courant) |
|
.pointeur_objet_retour); |
|
} |
|
} |
|
} |
|
|
|
fprintf(flux, "\n"); |
|
|
|
l_element_courant = (*l_element_courant).suivant; |
|
} |
|
|
|
fprintf(flux, "\n"); |
|
funlockfile(flux); |
|
|
|
return; |
|
} |
|
|
// vim: ts=4 |
// vim: ts=4 |