14.3. Trace des appels aux fonctions

Le tableau prédéfini FUNCNAME contient le nom des fonctions en cours d’exécution, matérialisant la pile des appels.

Le programme shell traceAppels affiche le contenu de ce tableau au début de son exécution, c'est-à-dire hors de toute fonction : le contenu du tableau FUNCNAME est vide (a). Puis la fonction f1 est appelée, FUNCNAME contient les noms f1 et main (b). La fonction f2 est appelée par f1 : les valeurs du tableau sont f2, f1 et main (c).

Lorsque l’on est à l’intérieur d’une fonction, la syntaxe $FUNCNAME (ou ${FUNCNAME[0]}) renvoie le nom de la fonction courante.

	#!/bin/bash
	#	@(#)	traceAppels

	function f2
	{
	echo " ------ Dans f2 :"
	echo " ------ FUNCNAME : $FUNCNAME"
	echo " ------ tableau FUNCNAME[] : ${FUNCNAME[*]}"	# (c)
	}


	function f1
	{
	echo " --- Dans f1 :"
	echo " --- FUNCNAME : $FUNCNAME"
	echo " --- tableau FUNCNAME[] : ${FUNCNAME[*]}"		# (b)
	echo " --- - Appel a f2 "
	echo

	f2
	}


	echo "Debut :"
	echo "FUNCNAME : $FUNCNAME"
	echo "tableau FUNCNAME[] : ${FUNCNAME[*]}"		# (a)
	echo

	f1

$ traceAppels
Debut :
FUNCNAME :
tableau FUNCNAME[] :                     (a)

 --- Dans f1 :
 --- FUNCNAME : f1
 --- tableau FUNCNAME[] : f1 main        (b)
 --- - Appel a f2

------ Dans f2 :
------ FUNCNAME : f2
------ tableau FUNCNAME[] : f2 f1 main   (c)
$