Tabla de Contenidos

Depuración de proyectos

Introducción

Lo primero que tenemos que hacer, es abrir nuestro proyecto Xailer e indicar que nuestros programas tienen que compilarse con la opción “/B”, que si bien recuerdas, es la opción que en Clipper activaba el depurador, pero como en Xailer no se indican las banderas de compilación directamente, lo haremos desde el Menú Principal del IDE opción: PROYECTO / PROPIEDADES DEL PROYECTO, aparecerá un fomulario con esta apariencia:

Selecciona del árbol de la izquierda la opción [x]Harbour y marca la casilla que dice “INCLUIR INFORMACION DE DEBUGGER”, y luego haz click en el botón de aceptar.

De momento, eso es lo único que tienes que hacer para indicar que tu programa debe compilarse con información para el depurador, el famoso switch “/b” de Clipper.

Para que todo nuestro código fuente pueda ser analizado por el depurador de Xailer, deberemos RECONSTRUIR el proyecto en su totalidad, así que presionaremos Alt+F9 en el IDE o bien desde el menú principal en la opción PROYECTO / RECONSTRUIR

(English Translation)

The first thing we have to do is to open our Xailer project and indicate that our programs have to compile with the option “/B”, which, if you recall, is the option that in Clipper activates the debugger, but in Xailer you cannot indicate the compilation flags directly – you have to use the Main Menu of the IDE option: Project/Properties, which will show a form with this appearance: Select from the tree to the left the option [x]Harbour and mark the box that says “Debug Info”, and afterwards click the OK button.

At the moment, this is the only thing you have to do to indicate that your program should be compiled with debugger information, the famous switch “/b” of Clipper.

So that all of our code can be analyzed by the Xailer debugger, we should recompile the entire project. Press Alt+F9 in the IDE or from the main menu option Project/Compile.

Puntos de ruptura

Antes de ejecutar nuestro programa y para activar el depurador, tendremos que incluir en nuestro código fuente los llamados “PUNTOS DE RUPTURA”, ¿ que son ?, pues simplemente son indicaciones para el depurador de la línea dentro del código fuente donde deseamos detener la ejecución del programa, para ello, en el editor de código fuente, seleccionamos el PRG sobre el cual queremos hacer la depuración y nos vamos a la línea donde queremos que el programa se “detenga” para analizar hasta ese punto su comportamiento.

Para marcar los puntos de ruptura en el código fuente, utilizaremos la opción EJECUTAR del menú principal del IDE , y seleccionaremos de ella la opción PUNTO DE RUPTURA, puedes también utilizar las teclas Ctrl+F5, y verás como dentro del código fuente de tu programa, la línea donde tenías el cursor, cambia de color:

Se pueden indicar tantos puntos de ruptura como se quiera, en tantos PRGs del proyecto Xailer como se quiera.

El flujo del programa lo iremos controlando desde la ventana del depurador, como veremos a continuación

Ya estamos listos para ejecutar nuestro programa, hemos activado las opciones de depuración, hemos reconstruido nuestro proyecto, y hemos marcado nuestros puntos de ruptura en el código fuente.

Al ejecutar el programa todo deberá comportarse como normalmente se hace, hasta que el flujo del programa llegue a la línea del código fuente donde se marcó el primer punto de ruptura, cuando el flujo del progrma llegue ahí, la ejecución detiene, y aparece el editor de código junto con una ventana como esta:

Esta es la ventana del depurador de Xailer, a través de ella tenemos acceso tanto a controlar la ejecución del programa, como a analizar los valores de las variables visbiles en ese punto del programa, además de poder analizar nuestras “areas” de trabajo (hablando de DBFs), también podemos visualizar el estado de los SETs (SET DATE, SET EPOCH, SET CENTURY, etc) y el “Call stack” o pila de llamadas, es decir desde que línea en que función fue llamada la rutina en la que nos encontramos actualmente.

La ventana del depurador está dividida en la siguientes secciones, analizaremos cada una de ellas detenidamente:

Inspección de variables

El inspector de variables del depurador de Xailer es una poderosa herramienta que te permite revisar los valores de tus variables en determinados puntos de tu programa, esta herramienta visualiza tanto nombres como valores de todos los tipos de variables válidos de Clipper / xHarbour: Local, Private, Public, Static y Global.

Si la variable analizada es del tipo ARRAY, entonces el inspector de variables te presentará en forma de una estructura de árbol todos los valores contenidos en la matriz o vector.

Si el tipo de campo es un objeto, también se utilizará una estructura de árbol para mostrarte todos los valores de las propiedades del objeto analizado, aún si el objeto contiene otros objetos contenidos dentro de él como en el caso de un formulario, las propiedades de estos objetos contenidos serán igualmetne visibles.

El inspector de variables permite además cambiar los valores de las mismas en tiempo de ejecución del programa.

Inspección de áreas de trabajo DBF

Otro importante componente de sistema de depuración de Xailer es el inspector de Areas de trabajo, el cual te permite visualizar las “areas” de trabajo donde tienes abiertos archivos DBF o ADT de Advantage Database Server.

Este inspector provee de valiosa información sobre el estado de todas tablas abiertas durante la ejecución de tu programa, incluyendo datos como número de registros, ubicación física del archivo, posición del puntero, etc.

La información también incluye la estructura de la tabla y el valor actual de todos los campos en donde se encuenta posicionado el apuntador.

Adicionalmente tienes acceso a información sobre los indices asignados, CDX, NTX o ADT, indicando además nombre del archivo indice, llave de indexación, condición de filtrado y mucha información adicional.

Por si todo lo anterior fuera poco también, puedes modificar los valores de los campos y editar las tablas DBFs o ADTs mediante la utilería DBU que viene incluida con Xailer y que es accesible desde el menú principal del mismo IDE.

Inspección de variables de entorno

Uso de la función LogDebug()