Un debugger monstrueux

de-monster-debugger

Lors du développement d’une application Flash ou Flex il devient rapidement nécessaire d’utiliser un outil de debug permettant de tracer ce qui se passe dans les profondeurs du code.

Le debug Player couplé au add-on Firefox Flash Tracer permet déjà de récupérer les trace dans le navigateur.
Très utile pour voir ce qui ne va pas sans être obligé de recompiler l’application mais très limité.

Le De MonsterDebugger proposé par le studio Demonster nous permet tracer le détail des objets dans une appli AIR en utilisant la classe fournie :

MonsterDebugger.trace("here is a bug"});

Plus intéressant :

MonsterDebugger.trace({label:"here is a bug", data:["really","bad","bug"]});

Mais son job ne s’arrête pas la, il nous permet aussi de :

– Naviguer dans la structure de l’application via un tree
– Editer en live de toute les  propriétés publiques depuis l’appli AIR
– Exécuter les méthodes publiques depuis l’appli AIR

Une bonne habitude à prendre est de créer sa propre classe de debug afin de ne pas être dépendant du debugger choisi, de pouvoir facilement en changer et éventuellement de customiser ses debugs.  Une des clef de l’utilisation intuitive du debugger (pour moi en tout cas), est de simplifier au max son utilisation. Il est donc judicieux de placer notre classe de debug à la racine de notre appli afin de tracer sans avoir à ajouter un import…

/**
 * Debugger
 */
package
{
	import nl.demonsters.debugger.MonsterDebugger;
 
	public class Debugger
	{
		private static var _debugger:MonsterDebugger;
 
		//////////////////////////////////////////
		// PUBLIC STATICS METHODS
		//////////////////////////////////////////
 
		public static function init(target:Object):void {
			if(_debugger == null)
				_debugger = new MonsterDebugger(target);
		}
 
		public static function INFO(from:*, message:*, color:Number = -1):void {
			_debug("INFO ", from, message, color != -1 ? color:0x000000);
		}
 
		public static function DEBUG(from:*, message:*, color:Number = -1):void {
			_debug("DEBUG", from, message, color != -1 ? color:0x0080FF);
		}
 
		public static function WARN(from:*, message:*, color:Number = -1):void {
			_debug("**WARN ", from, message, color != -1 ? color:0xFFAC00);
		}
 
		public static function FATAL(from:*, message:*, color:Number = -1):void {
			_debug("**FATAL**", from, message, color != -1 ? color:0xFF0000);
		}
 
		//////////////////////////////////////////
		// PRIVATE STATICS METHODS
		//////////////////////////////////////////
 
		private static function _debug(level:String, from:*, message:*, color:Number):void {
			MonsterDebugger.trace(from, message, color);
			trace(level + " " + from + " :: " + message);
		}
	}
}

Pour conclure, De MonsterDebugger est un outils simple et efficace pour déboguer (en français s’il vous plait) et optimiser ses application Flash/Flex. On peut  regretter de ne pouvoir tracer et trier pa level (cf. classe ci dessus) et de ne pouvoir tracer à la fois un objet et un commentaire correspondant.

Peut-être dans les versions suivantes…

De MonsterDebugger