ARMi Software Solutions
   
     
Home Page Image
 

Este template facilita y mejora notablemente la depuración, la implementación y el soporte de aplicaciones Clarion for Windows permitiendo encontrar fácilmente los puntos de conflicto con resultados excelentes sin la necesidad de utilizar el complejo debuger o la arcaica, pobre y peligrosa técnica del uso de las funciones MESSAGE() o SETCLIPBOARD().

 

TraceIt Template

Para Clarion6 y C55, Legacy y ABC!

Ahora para Clarion 7! y Net Talk Web Server!

Este template
facilita y mejora notablemente la depuración, la implementación y el soporte de aplicaciones Clarion for Windows permitiendo encontrar fácilmente los puntos de conflicto con resultados excelentes sin la necesidad de utilizar el complejo debuger o la arcaica, pobre y peligrosa técnica del uso de las funciones MESSAGE() o SETCLIPBOARD().

Con el agregado de muy poco código, Ud. puede cambiar radicalmente la forma en que depura y realiza soporte de su software.

No le ha pasado que:
Agregó MESSAGE o SETCLIPBOARD a su app para tracear algun problema, o llevar al analizador de consultas algun script y, una vez que soluciona el problema tener que volver sobre sus pasos a borrarlos para recompilar? o, peor aún... se olvida de borrarlos y le manda la aplicación al usuario final llena de ventanas incomprensibles?
Necesitar tracear queries Sql enviados al Server sin tener algún profiler instalado en la maquina en la que tiene acceso?
Un usuario no puede pasar por una puerta de seguridad del sistema y no sabe porqué? 
Lo llame un usuario preguntándole porque no ve o esta disable determinado control de una ventana ?
Tener problemas para seguir el cálculo de una determinada variable y tener que hacerlo sobre las bases de su usuario?

Todo lo anterior y mucho mas se soluciona utilizando este template.

Simplificando, tiene una función muy parecida a colocar MESSAGES o SETCLIPBOARDS en los procedimientos para intentar tracear algún problema.
La ventaja es que no hay que volver atrás a borrarlos para compilar finalmente la aplicación.

Con él Ud. puede:
Colocar código de traceo sin necesidad de luego borrar y recompilar la aplicación.
Encontrar fácilmente errores en la lógica de programación siguiendo el flujo del programa.
Depurar porciones de código de un reporte donde no se puede hacer usando MESSAGE() o STOP().
Tracear queries Sql enviados al Server sin necesidad de tener algún profiler instalado en la maquina en la que tiene acceso.
Definir tipos de traceo y otorgarles propiedades de funcionamiento y poder luego filtrarlos.
Definirles un color particular y un indent para identificarlos en la pantalla.
Definir mandar al clipboard o no el mensaje.
Tracear automáticamente el texto de los mensajes presentados al usuario asi como también con que botón contest
ó.

Esto le permitirá, en tiempo de ejecución:
Tracear la aplicación en producción en las máquinas de su usuario.
Verificar por qué razón un usuario no ve o esta disable determinado control de una ventana.
Seguir el cálculo de una determinada variable.
Solucionar problemas cuando un usuario no puede pasar por una puerta de seguridad del sistema y no sabe por qué.
Copiar al portapapeles un script Sql generado en runtime para poder llevarlo al analizador de consultas para probarlo o mejorarlo o ver que es lo que esta fallando en el.
Realizar un punto de “stop” para poder copiar al portapapeles el contenido del mensaje traceado.
Hacer que su usuario active el traceo, realice la operación que no esta funcionando como debiera y le envie el traceo por mail, pudiendo ver en él, hasta los mensajes que se le presentaron (de error o de su sistema ) y con que botón respondió a los mismos.

Ya no mas tipear y luego borrar MESSAGES y SETCLIPBOARDS, desde ahora aprovecha ese tipeo y queda para siempre en su código para poder analizarlo cuando sea necesario!
Ya no mas preguntas de sus clientes sobre el comportamiento de procesos o ventanas teniendo que reveer el código para ver que esta pasando!

Ventajas extra:
La ventana de traceo es SDI, puede arrastrarla fuera de la ventana del sistema.
Solo activa la memorización y visualización del traceo cuando lo necesita.
Al cerrar la ventana de traceo, el funcionamiento del sistema vuelve a la normalidad y los recursos utilizados por el traceo son liberados.

Demo:

              Bajar Demo  (Traceit.zip)

Como Instalarlo:

           
Bajar Instalador  (ARMi_TraceIt.exe)
El instalador detecta atomáticamente las versiones de Clarion instaladas e instala en el directorio de la versión elegida, dentro de los siguientes directorios: \3rdParty\Templates, Examples y Bin
El instalador puede registrar los templates por Ud. o Ud. puede registrar ARMi_TraceIt.tpl (ABC) o el ARMi_TraceItCw.tpl (Legacy) en manualmente.

 

Como utilizarlo:
Agregue el Template al Global de las aplicaciones que desee tracear.
En el caso de MultiDLL, hágalo primero con el data dll, luego solo en las app en las que necesite utilizar el traceo y finalmente en el app exe, desde donde seguramente llamará a la ventana de traceo.
En la solapa General defina primero el idioma de la ventana de traceo, si necesita otro idioma que Español/Ingles/Frances o Portugues puede traducir la ventana modificando el ARMi_TraceIt.ini y copi
ándolo al directorio de su aplicación.

Defina los tipos de mensajes de traceo a registrar, estos tipos permitirán definir la forma en la que se ven en la ventana de traceo y los filtros de la misma.

Por ejemplo, queremos tracear mensajes para saber cuando pasa por nuestra rutina de control de acceso a procesos (Puertas) o de lectura de parámetros de funcionamiento, a estos mensajes les asignaremos el tipo P
Además queremos poder tracear algunos queries SQL, de esos complejos que vienen de ser armados con muchos filtros y opciones del usuario, entonces definimos otro tipo de traceo con el codigo Q, a este le decimos además, que haga un setclipboard automático.

Entonces ingrese:

Descripción  : Parametros y Puertas
Código         : P
Color            : color:red
Indent           : 3
SetClipboard: No

Descripción  : Queries Sql
Código         : Q
Color            : color:green
Indent           : 0
SetClipboard: Si

La ventana se ve como la que sigue:

 De este modo, si en su aplicación ingresa, por ejemplo, en los procesos de lectura de parámetros o permisos:

 Trace(‘Leyendo párametro’ & MiParametro & ‘ : ‘ & ValorParametro , ‘P’)

 O en los lugares en donde necesite tracear el querie enviado al motor Sql ingresa:

 Trace( ‘Leo cantidad de productos con : ‘ & MiQuery , ‘Q’ )

logrará loguear los mensajes en tiempo real, esto se producirá solo si tiene activa la ventana de traceo, ventana que es SDI para que pueda desplazarse afuera de la ventana de la aplicación y mejorar la visualizaicón.

Para activar la ventana de traceo, normalmente desde una opción de Menú, o alertando alguna tecla en el Frame o lo que se le ocurra, tipee:

START(wTrace)

Esto activará la ventana de traceo y la memorización de mensajes, viéndose como sigue:

 

Esta ventana puede traducirse automáticamente al Ingles, Español, Frances o Portugues automáticamente o al idioma que necesite a traves del archivo ini: ARMi_Traceit.ini

Mientras se está logeando, si el tipo de mensaje tiene chequeado el SetClipboard, se mandará el mensaje al clipboard y aparecerá un mensaje como el que sigue indicándolo.

 

En este momento y antes de cerrar esta ventana ud. deberia  hacer uso del portapapeles ya que es probable que se modifique mientras el programa continúa y porque el mensaje logueado que se verá en la pantalla, si es mayor de 255 caracteres se repartirá en varios renglones haciendo mas difícil su futura recuperación.

Copiar al Clipboard: De todas maneras la ventana permite con el botón copiar al portapapeles, copiar lo que estamos viendo para rearmar un query o para que por ejemplo nuestro usuario que no tiene acceso por conexión remota nos pueda enviar la info generada por el trace para analizarla y darle alguna solución.

Mensajes borradores: Si envia mensajes a tracear omitiendo el tipo como:

Trace('Este es un mensaje borrador')

se tomarán como mensajes borradores, normalmente son mensajes de urgencia en los que para tipear menos, solo ponemos el valor de una variable y entonces finalmente y cuando hasta nos olvidamos que los pusimos, ensucian la ventana de traceo, asi que la misma tiene un check para omitir la visualización de estos mensajes borrador.

Búsquedas: En esta ventana además se puede setear si memorizar o no Fecha/Hora en cada renglón y se puede buscar por coincidencia tipo INSTRING en forma secuencial desde el primer registro logeado y siguiendo con el botón >>> viendo las siguientes coincidencias.

Identificando ingreso y salida de procedimientos: Se ve en la ventana de logueos anterior mensajes como los que siguen:

 >>> Init Proc: Factur , App: Factur
<<< Kill Proc: uClientes, App t_pcom

Estos mensajes son de entrada y salida de las ventanas del sistema indicando el nombre del Proc, el App, fecha, descripción y prototipo, donde se encuentra en el Init Embed y el Kill Embed de la misma.

Para utilizarlo solo debe tildar el check Trace all proc/app names at Init Kill de este template.

Menu option trace: Esto se agrega automáticamente a los frames con menú y se obtienen traceos como el que sigue:

---> Menu: Invoices

Copiar a Archivo: Puede definir también el path y nombre del archivo ASCII a utilizar p

Message Box Trace: The trace window has its own message box, then it can trace the text messages and the button

ara copiar, defina el nombre como un string, con comillas simples o como una variable.

Traceo de Mensajes y su respuesta: Al activar la ventana de Traceo la misma hace un Hook a un proceso porpio de mensajes permitiendo tracear el texto de todos los mensajes mostrados al usuario y el texto del bot{on con el que contesta al mismo.

Tipos Especiales: TraceIt usa algunos tipos especiales para poder tracear los mensajes automáticos que ofrece, todos comienzan con #, estos son:
#P     : Init, Kill, Menu options, Texto y respuestas de MessageBox (estos mensajes responden al check Ocultar especiales.
#MH : Message Halt, este tipo permite, paarte de loguear el mensaje, presentar un messagebox con la posibilidad de Halt el app, muy util cuando estamos en un loop que no sabemos porque no brekea.

Code Template: Agregamos aparte un sencillo Code Template para el logueo de mensajes

El check Setclipboar sobreescribe lo que pudiera estar programado en el tipo de mensage utilizado.

 Además incluimos el témplate:

Enable Procedure Identification Window

El cual permite en tiempo real y sin necesidad del template TraceIt conocer también el Proc y App de donde proviene la ventana que estamos viendo.

 

Nettalk web server, ideas para el traceo:
En la ventana del procedimiento principal (Webserver) agregue un botòn y en el embed del mismo tipee
START(wTrace)
Para tracear los GetSessionValues agregue en le procedimiento WebHandler
En el embed p_web.GetSessionValue PROCEDURE(string p_Name), despues del parent call agregue:
if p_name<>'' then Trace('GSV: '&p_Name&'='&ReturnValue,'GSV') end
Para tracear los
SetSessionValues agregue en le procedimiento WebHandler
En el embed p_web.SetSessionValue PROCEDURE(string p_Name,STRING p_Value), antes del parent call agregue:
if p_name<>'' then Trace('SSV: '&p_Name&'='&p_Value,'SSV') end
Para verificar los filtros de los browses agregue luego de SetFilter
Trace(loc:filterwas)

Futuras mejoras:
Tracear en un archivo TXT en lugar de en un queue de memoria.
Tracear en archivos TPS o SQL pudiendo definir asignaciones de campos.
Tracear en modo silecioso, sin que se vea la ventana.

Historia:
Marzo 2008: Primera versión alfa del template, solo ABC.
Abril   2008: Agregado de versión Legacy
Mayo  2008: Agregado de filtro, color e indent
Junio   2008: Versión 6.02 Beta
Julio    2008: ADD Setclipboard set and override on Control Template
Julio    2008: CHANGE Ventana de traceo SDI
Julio    2008: ADD Esconder mensajes borrador
Julio    2008: ADD Copiar mensajes de traceo a un archivo ASCII
Julio    2008: ADD Traceo de Mensajes al usuario y botón con el que contesta
Enero  2009: Net Talk web Server compatible
Abril    2009: Clarion 7 Compatible

Usuarios registrados u$s29.-
 

Nuevos Usuarios u$s159.-
 


 
   
      © 2009 ARMi software solutions  -  info@armi.com.ar