flex debugging air adobe

flex - ¿Puedo construir una versión de depuración de una aplicación de Adobe AIR?



debugging (3)

no es una respuesta directa, pero si publica para AIR3.5 (o 3.6 beta), puede obtener información de depuración:

agrega un oyente para RTE no capturadas al nivel superior de tu aplicación:

this.loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, errorHandler);

y obtener información de depuración del error en el oyente:

function globalErrorHandler(event:UncaughtErrorEvent):void { var message:String; //check for runtime error if (event.error is Error) message = (event.error as Error).getStackTrace(); //handle other errors else if (event.error is ErrorEvent) message = (event.error as ErrorEvent).text; else message = event.error.toString(); //do something with message (eg display it in textfield) myTextfield.text = message; }

getStackTrace devolverá un seguimiento de pila incluso para las aplicaciones AIR de lanzamiento (siempre que use AIR3.5 o superior).

Estoy intentando depurar un problema en una máquina de clientes. El problema es que el problema es un error de tiempo de ejecución con muy poca pista sobre dónde está. Es un problema intermitente. Sé que ADL me permite ejecutar la aplicación en modo de depuración. El problema es decirle al usuario que descargue y administre la invocación ADL va a ser muy difícil. Sería mucho más fácil si pudiera simplemente darle al usuario final una instalación / ejecutable para instalar y ejecutar y luego enviarme el rastro del problema. Entonces, lo que estoy buscando son pasos fáciles para que el cliente pueda ejecutar la aplicación AIR en modo de depuración. Descargar ADL y encontrar la ubicación de instalación de la aplicación va a ser difícil de gestionar de forma remota con el usuario final.

Actualización: debe asegurarse de estar trabajando con AIR 3.5 y Flash 11.5 y también incluir el siguiente indicador "-swf-version = 18" en configuraciones adicionales del compilador. Luego debe detectar el error global como se menciona en la respuesta y le mostrará la ubicación del error. Sin números de línea, por supuesto. Solo nombres de rutina. Gracias milion a Lee por la impresionante respuesta.


Sin las herramientas SDK; No creo que sea posible ejecutar una aplicación aIR en modo de depuración. Pero, aquí hay algunas alternativas para considerar:

  • El cliente debe tener una idea de lo que está pasando para causar el error, ¿verdad? ¿Puedes darles una compilación especial con Alert Boxes o logging o algo para ayudar a aislar el error a una línea de código?
  • ¿Puedes escuchar el evento uncaughtException ? El evento le dará el seguimiento completo de la pila ( Error.getStackTrace () ); que luego podría iniciar sesión, posiblemente con otra información. Luego solo tienes que decirle a tu cliente que "vaya aquí" y "me envíe este archivo". O incluso mostrar la información en alguna alerta y hacer que el usuario la copie y pegue en un correo electrónico. Más información sobre uncaughtException aquí y aquí