diff --git a/ecrire/base/abstract_sql.php b/ecrire/base/abstract_sql.php
index f12c0fe4b8ee4db335c881c80271dfe2071dbabd..6f245906dda6659216e2193a88304db267aa5a02 100644
--- a/ecrire/base/abstract_sql.php
+++ b/ecrire/base/abstract_sql.php
@@ -95,7 +95,6 @@ function sql_select (
 
 	if (!is_array($res)) return $res;
 	list($query, $num, $msg) = $res;
-	include_spip('public/debug');
 	erreur_squelette($msg, $num, $query);
 	return false;
 }
diff --git a/ecrire/base/connect_sql.php b/ecrire/base/connect_sql.php
index a9636abe777391c69939a98d515f1c4277e511a0..ba2001850421f62488d433fdcff3afcfd5e57275 100644
--- a/ecrire/base/connect_sql.php
+++ b/ecrire/base/connect_sql.php
@@ -32,7 +32,6 @@ function spip_connect($serveur='', $version='') {
 	if (isset($connexions[$index][$version])) return $connexions[$index];
 
 	include_spip('base/abstract_sql');
-	if (isset($_GET['var_profile'])) include_spip('public/debug');
 	$install = (_request('exec') == 'install');
 
 	// Premiere connexion ? 
diff --git a/ecrire/exec/valider_xml.php b/ecrire/exec/valider_xml.php
index 3a8079dc0be4d279d938e69078597ad1803b3e95..33acc1a580b20856c0e9f54fb2bfa2872bd5612e 100644
--- a/ecrire/exec/valider_xml.php
+++ b/ecrire/exec/valider_xml.php
@@ -12,7 +12,6 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 include_spip('inc/presentation');
-include_spip('public/debug');
 
 // http://doc.spip.org/@exec_valider_xml_dist
 function exec_valider_xml_dist()
@@ -33,7 +32,6 @@ function valider_xml_ok($url, $req_ext)
 		$onfocus = "this.value='';";
 		$texte = $bandeau = $err = '';
 	} else {
-		include_spip('public/debug');
 		include_spip('inc/distant');
 		if (is_dir($url)) {
 			$dir = (substr($url,-1,1) === '/') ? $url : "$url/";
diff --git a/ecrire/inc/actions.php b/ecrire/inc/actions.php
index 0b7d19a6c6996a785a4436e393c6c6efbd0962c2..963b9be1e7f8950d9d9f542f47e4e5b79a309ab1 100644
--- a/ecrire/inc/actions.php
+++ b/ecrire/inc/actions.php
@@ -215,7 +215,7 @@ function ajax_retour($corps,$xml = true)
 		$debut = $xml?'<' . "?xml version='1.0' encoding='" . $c . "'?" . ">\n":'';
 	}
 	if (count($GLOBALS['tableau_des_erreurs']) AND isset($_COOKIE['spip_admin'])) {
-		find_in_path('debug.php','public/',true);
+		include_spip('public/debusquer');
 		$corps = affiche_erreurs_page($GLOBALS['tableau_des_erreurs']) . $corps;
 	}
 
diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php
index 57830a11fea34d682b00db5c90f0ec84206388fc..d085b93396a07dd8d17c6defeda9e7d8f0dbc436 100644
--- a/ecrire/inc/filtres.php
+++ b/ecrire/inc/filtres.php
@@ -2090,7 +2090,7 @@ function env_to_attributs ($texte, $ignore_params=array()) {
 function f_jQuery ($texte) {
 	static $doublon=0;
 	if ($doublon++) {
-		include_spip('public/debug');
+		include_spip('public/debusquer');
 		$texte = affiche_erreurs_page(array(
 			array("#INSERT_HEAD",_T('double_occurrence')))
 		) . $texte;
diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php
index b1bbfefa8477048855115f4a2ca4476b4377d55a..a22cb1e58aa42ffef79ee509f226c0fb30159ad8 100644
--- a/ecrire/inc/utils.php
+++ b/ecrire/inc/utils.php
@@ -1644,6 +1644,10 @@ function exec_info_dist() {
 		echo "pas admin";
 }
 
+function erreur_squelette($message='', $lieu='', $quoi='') {
+	$debusquer = charger_fonction('debusquer', 'public');
+	return $debusquer($message, $lieu, $quoi);
+}
 
 /**
  * La fonction de base de SPIP : un squelette + un contexte => une page.
diff --git a/ecrire/index.php b/ecrire/index.php
index 0392e002a2de92cd3856031e12d6b465cd042e36..186bda9a2bc12cf90a5edf0ce83efd55b727c4dd 100644
--- a/ecrire/index.php
+++ b/ecrire/index.php
@@ -154,11 +154,11 @@ $var_f = charger_fonction($exec);
 $var_f();
 
 if ($GLOBALS['var_mode'] == 'debug') {
-	include_spip('public/debug');
 	$var_mode_objet = _request('var_mode_objet');
 	erreur_squelette("", "", $var_mode_objet);
 }
 if (isset($tableau_des_erreurs) AND count($tableau_des_erreurs) AND $affiche_boutons_admin)
+	include_spip('public/debusquer');
 	echo affiche_erreurs_page($tableau_des_erreurs);
 
 ?>
diff --git a/ecrire/public.php b/ecrire/public.php
index 0ae5a135af28f5dcf081c9930209bef923840895..5297076eba3fc193beeb04cb23adb0ed5ef7a7e1 100644
--- a/ecrire/public.php
+++ b/ecrire/public.php
@@ -181,7 +181,6 @@ if (isset($GLOBALS['_INC_PUBLIC'])) {
 		// la memoriser dans le tableau des erreurs
 		// On ne revient pas ici si le nb d'erreurs > 4
 		if ($res === false AND $affiche_boutons_admin) {
-			include_spip('public/debug');
 			erreur_squelette(_T('zbug_erreur_execution_page'));
 		}
 	}
@@ -192,7 +191,6 @@ if (isset($GLOBALS['_INC_PUBLIC'])) {
 		$var_mode_affiche = _request('var_mode_affiche');
 		$var_mode_objet = _request('var_mode_objet');
 		$GLOBALS['debug_objets'][$var_mode_affiche][$var_mode_objet . 'tout'] = ($var_mode_affiche== 'validation' ? $page['texte'] :"");
-		include_spip('public/debug');
 		if ($GLOBALS['debug_objets']['sourcefile']) {
 			erreur_squelette('', '', $var_mode_objet);
 		}
@@ -207,12 +205,12 @@ if (isset($GLOBALS['_INC_PUBLIC'])) {
 	//
 	page_base_href($page['texte']);
 
-	// (c'est ici qu'on fait var_recherche, tidy, boutons d'admin,
+	// (c'est ici qu'on fait var_recherche, validation, boutons d'admin,
 	// cf. public/assembler.php)
 	echo pipeline('affichage_final', $page['texte']);
 
 	if (count($tableau_des_temps) AND $affiche_boutons_admin) {
-		include_spip('public/debug');
+		include_spip('public/tracer');
 		echo chrono_requete($tableau_des_temps);
 	}
 
diff --git a/ecrire/public/compiler.php b/ecrire/public/compiler.php
index bf241503084e13fd8173a1f1d100ea1654902ca6..957c37cff66c1497eb9e15d778ccea746f124021 100644
--- a/ecrire/public/compiler.php
+++ b/ecrire/public/compiler.php
@@ -140,8 +140,7 @@ function calculer_inclure($p, $descr, &$boucles, $id_boucle) {
 		else $path = "find_in_path(\"$fichier\")";
 		$code = "if (is_readable(\$path = $path))
  		include \$path;
-	else { include_spip(\"public/debug\");
-			erreur_squelette(_T(\"zbug_info_erreur_squelette\"),
+	else { 	erreur_squelette(_T(\"zbug_info_erreur_squelette\"),
 				 _T(\"fichier_introuvable\", array(\"fichier\" => \"$fichier\")));}";
 	} else 	{
 		$_contexte['fond'] = "\'fond\' => ' . argumenter_squelette(" . $code  . ") . '";
@@ -592,12 +591,10 @@ function calculer_liste($tableau, $descr, &$boucles, $id_boucle='') {
 			}
 			return '(' . substr($res,2+$descr['niv']) . ')';
 		}
-	} else return "@debug_sequence('$id_boucle', '" .
-	  ($descr['nom']) .
-	  "', " .
-	  $descr['niv'] .
-	  ",  array(" .
-	  join(" ,\n$tab", $codes) . "))";
+	} else {
+	  $nom = $descr['nom'] . $id_boucle .  ($descr['niv']?$descr['niv']:'');
+	  return "join('', array_map('array_shift', \$GLOBALS['debug_objets']['sequence']['$nom'] = array(" .  join(" ,\n$tab", $codes) . ")))";
+	}
 }
 
 define('_REGEXP_COND_VIDE_NONVIDE',"/^[(](.*)[?]\s*''\s*:\s*('[^']+')\s*[)]$/");
@@ -736,7 +733,7 @@ function compile_cas($tableau, $descr, &$boucles, $id_boucle) {
 		if ($code != "''") {
 			$code = compile_retour($code, $avant, $apres, $altern, $tab, $descr['niv']);
 			$codes[]= (($mode == 'validation') ?
-				"array(" . $p->ligne . ", '$commentaire', $code)"
+				"array($code, '$commentaire', " . $p->ligne . ")"
 				: (($mode == 'code') ?
 				"\n// $commentaire\n$code" :
 				$code));
@@ -975,7 +972,9 @@ function compiler_squelette($squelette, $boucles, $nom, $descr, $sourcefile, $co
 	}
 
 	if ($debug)
-		$code = "\n\n/*\n" . public_decompiler($squelette) . "\n*/\n";
+		$code = "\n\n/*\n" . 
+			str_replace('*/', '* /', public_decompiler($squelette)) 
+			. "\n*/\n";
 	else $code = "";
 
 	foreach($boucles as $id => $boucle) {
@@ -983,7 +982,8 @@ function compiler_squelette($squelette, $boucles, $nom, $descr, $sourcefile, $co
 		  $boucle->type_requete .
 		  " " .
 		  (!$debug ? '' : 
-			decompiler_criteres($boucle->param, $boucle->criteres)) .
+		   str_replace('*/', '* /', 
+			       decompiler_criteres($boucle->param, $boucle->criteres))) .
 		  " */\n\n" .
 		  $boucle->return;
 	}
diff --git a/ecrire/public/debug.php b/ecrire/public/debusquer.php
similarity index 96%
rename from ecrire/public/debug.php
rename to ecrire/public/debusquer.php
index e4a10966fed3066ee439e4763044f3c8025fdf42..9a4d6ea647e7cd494a8bb266d28caec40d735adf 100644
--- a/ecrire/public/debug.php
+++ b/ecrire/public/debusquer.php
@@ -133,8 +133,8 @@ define('_DEBUG_MAX_SQUELETTE_ERREURS', 4);
 // pour les appels involontaires ($message non vide => erreur)
 // et volontaires.
 //
-// http://doc.spip.org/@erreur_squelette
-function erreur_squelette($message='', $lieu='', $quoi='') {
+
+function public_debusquer_dist($message='', $lieu='', $quoi='') {
 	global $tableau_des_erreurs;
 
 	if ($message) {
@@ -155,20 +155,6 @@ function erreur_squelette($message='', $lieu='', $quoi='') {
 	}
 }
 
-// appelee a chaque sortie de sequence (compilo.php)
-// http://doc.spip.org/@debug_sequence
-function debug_sequence($id, $nom, $niv, $sequence) {
-	global $debug_objets;
-
-	if (!$niv)
-	  {
-	    $debug_objets['sequence'][$nom.$id] = $sequence;
-	  }
-	$res = "";
-	foreach($sequence as $v) if (is_array($v)) $res .= $v[2];
-	return $res;	
-}
-
 // http://doc.spip.org/@trouve_boucle_debug
 function trouve_boucle_debug($n, $nom, $debut=0, $boucle = "")
 {
@@ -178,15 +164,15 @@ function trouve_boucle_debug($n, $nom, $debut=0, $boucle = "")
 	if (is_array($debug_objets['sequence'][$id])) {
 	 foreach($debug_objets['sequence'][$id] as $v) {
 
-	  if (!preg_match('/^(.*)(<\?.*\?>)(.*)$/s', $v[2],$r))
-	    $y = substr_count($v[2], "\n");
+	  if (!preg_match('/^(.*)(<\?.*\?>)(.*)$/s', $v[0],$r))
+	    $y = substr_count($v[0], "\n");
 	  else {
 	    if ($v[1][0] == '#')
 	      // balise dynamique
-	      $incl = $debug_objets['resultat'][$v[0]];
+	      $incl = $debug_objets['resultat'][$v[2]];
 	    else
 	      // inclusion
-	      $incl = $debug_objets['squelette'][trouve_squelette_inclus($v[2])];
+	      $incl = $debug_objets['squelette'][trouve_squelette_inclus($v[0])];
 	    $y = substr_count($incl, "\n")
 	      + substr_count($r[1], "\n") 
 	      + substr_count($r[3], "\n");
@@ -198,7 +184,7 @@ function trouve_boucle_debug($n, $nom, $debut=0, $boucle = "")
 	      if ($incl = trouve_squelette_inclus($v[1]))
 		return trouve_boucle_debug($n, $incl, $debut);
 	    }
-	    return array($nom, $boucle, $v[0] -1 + $n - $debut );
+	    return array($nom, $boucle, $v[2] -1 + $n - $debut );
 	  }
 	  $debut += $y;
 	 }
@@ -357,7 +343,7 @@ function debug_dumpfile ($texte, $fonc) {
 				_T($titre),	       
 				' ',
 				$err,
-				"</legend>";
+				"</legend>"; 
 		echo $texte;
 		echo "</fieldset></div>";
 		echo "\n</div>";
diff --git a/ecrire/public/styliser.php b/ecrire/public/styliser.php
index e731a9d8425491c1081b1cbcd855c28f7bf3df9d..1dbef1105c04b999219a2e2fc07345545b20d45b 100644
--- a/ecrire/public/styliser.php
+++ b/ecrire/public/styliser.php
@@ -49,8 +49,6 @@ function public_styliser_dist($fond, $contexte, $lang='', $connect='', $ext='htm
 
 	// pas de squelette : erreur !
 	if (!$squelette) {
-		// Indiquer une erreur squelette
-		include_spip('public/debug');
 		erreur_squelette(_T('info_erreur_squelette2',
 			array('fichier'=>"'$fond.$ext'")),
 			$GLOBALS['dossier_squelettes']);
diff --git a/ecrire/public/tracer.php b/ecrire/public/tracer.php
index f7d547467ffc97d7845ce0095a84572a36afd80e..3b27d08ef5487eb9a77c304314f1b8b0dabed804 100644
--- a/ecrire/public/tracer.php
+++ b/ecrire/public/tracer.php
@@ -33,12 +33,9 @@ function trace_query_end($query, $start, $result, $err, $serveur='')
 		trace_query_chrono($start, microtime(), $query, $result, $serveur);
 	if (!($err = sql_errno())) return $result;
 	$err .= ' '.sql_error();
-	if (autoriser('debug')) {
-		include_spip('public/debug');
-		$tableau_des_erreurs[] = array(
+	$tableau_des_erreurs[] = array(
 		_T('info_erreur_requete'). " "  .  htmlentities($query),
 		"&laquo; " .  htmlentities($err)," &raquo;");
-	}
 	return $result;
 }
 
@@ -139,6 +136,7 @@ function chrono_requete($temps)
 	     ("<tr><td>" .  count($temps) . " </td><td> " . _T('info_total') . '</td><td>' . $total . "</td></td><td></td></tr>"))
 	  . "</table>";
 
+	include_spip('public/debusquer');
 	return (_DIR_RESTREINT ? '' : affiche_erreurs_page($GLOBALS['tableau_des_erreurs']))
 	. affiche_erreurs_page($temps, $titre);
 }
diff --git a/ecrire/xml/valider.php b/ecrire/xml/valider.php
index f72fff38e76159ec2840507492a94ae279741182..3b8851b0251013c8fbd257f9ea09e949f36ff534 100644
--- a/ecrire/xml/valider.php
+++ b/ecrire/xml/valider.php
@@ -310,6 +310,8 @@ function phraserTout($phraseur, $data)
 // http://doc.spip.org/@emboite_texte
 function emboite_texte($res, $fonc='',$self='')
 {
+	include_spip('public/debusquer');
+
 	list($texte, $errs) = $res;
 	if (!$texte)
 		return array(ancre_texte('', array('','')), false);