Depuración de procesos de Velneo

Velneo incorpora un depurador de procesos que nos permitirá encontrar y solucionar incidencias en nuestros desarrollos.

Podremos depurar en remoto cualquier aplicación instalada en un Velneo vServer, sin importar la ubicación. El depurador de procesos se invoca desde Velneo vDevelop. Eso quiere decir que, si queremos depurar un proceso de una instancia concreta de un servidor concreto, éste debe disponer al menos de un puesto de edición. Nos conectarnos con Velneo vDevelop a ese servidor y cargaremos la solución.

Para depurar un proceso hemos de incluir un punto de interrupción en cada línea del mismo en la que queramos realizar alguna comprobación. Un punto de interrupción hace que, cuando ejecutemos el proceso en modo de depuración, su ejecución se pare en ese punto.

Existen dos comandos de instrucción de proceso específicos que podemos usar cuando ejecutemos un proceso en debug

Debug Assert: este comando permite evaluar la condición establecida como parámetro y al ejecutar el proceso en modo de depuración, en caso de que no se cumpla la condición, detendrá la ejecución del depurador en esa línea.

Debug Mensaje: este comando permite presentar un mensaje cuando el proceso se ejecute modo de depuración. El mensaje se mostrará en el ventana de salida de mensajes del depurador.

Si ejecutamos la aplicación en modo normal, estos comandos serán omitidos al lanzar el proceso.

Para ejecutar la instancia en modo de depuración ejecutar la opción depurar solución actual (shift + F5) del menú soluciones.

En tiempo de ejecución, en el momento en el que se dispare el proceso, se abrirá la ventana de depuración, en la cual podremos ir revisando el circuito que sigue el proceso, comprobar valores de campos, variables, objetos en memoria, etc. que se vayan usando a lo largo del proceso.

La ejecución del proceso se detendrá al llegar al primer punto de interrupción que hayamos incluido en el mismo. En la parte inferior de la ventana veremos que se incluyen una serie de separadores en los que podremos ir consultando determinada información que se vaya generando desde el proceso. Más adelante las explicaremos.

Para continuar con la ejecución, disponemos de los siguientes comandos en la barra de herramientas del depurador:

Información que podemos obtener en el depurador

En la parte inferior de la ventana del depurador se incluyen una serie de pestañas, donde podremos consultar la información que se vaya generando durante la ejecución del proceso. Esto es:

Stack

Muestra la pila de llamadas de la línea de instrucción en curso. Nos permite conocer de un vistazo la sucesión de líneas y comandos de instrucción que se han ejecutado para llegar a la línea en curso.

De cada línea del stack podremos consultar distinta información, según su origen sea ficha o lista.

Si es origen lista, podemos saber cuál es la tabla de origen y el número de fichas que contiene.

Si es origen ficha, podremos saber qué tabla es, qué dirección ocupa en el fichero, si se ha modificado o no durante el proceso y consultar el valor actual y anterior de sus campos.

Transacción

Si estamos depurando un proceso transaccional (que escribe en disco), en esta pestaña podremos conocer el número de la transacción (el nº que se asigna a la transacción en Velneo vAdmin), su nombre, el número de operaciones realizadas y, si se usa el comando de instrucción cambiar porcentaje realizado del proceso, también se mostrará dicho dato.

Variables globales

Permite comprobar el valor que tienen las variables globales en un momento dado durante la ejecución del proceso. Se podrá consultar el valor de las variables globales de todos los proyectos heredados.

El depurador no muestra los valores iniciales de las variables globales en disco, muestra valor vacío en el caso de variables alfabéticas y 0 en el caso de variables numéricas.

Solamente devuelve su valor cuando se usan (cuando se leen o se modifican o bien en el propio proceso en debug, o bien en esa sesión de vClient).

Variables locales

Permite comprobar el valor que tienen las variables locales del proceso que estamos depurando en un momento determinado.

Fichas en memoria

Permite comprobar las fichas en memoria del proceso, creadas con los comandos de instrucción crear nueva ficha en memoria y crear copia de ficha en memoria. En el depurador podremos comprobar la tabla asociada a la ficha, la posición física que ocupa dentro del fichero (si ya ha sido dada de alta) y el valor actual y anterior de sus campos.

Objetos en memoria

Permite comprobar objetos en memoria del proceso, instanciados con los comandos de instrucción crear manejador de objeto. De los objetos podremos comprobar su tabla asociada (si la tiene), variables locales, número de fichas (en el caso de que se trate de un objeto de lista) y, si se trata de un objeto de ficha, por ejemplo formulario, podremos conocer el valor actual y anterior de los campos de esa ficha.

Debug output

Aquí se mostrará la información generada por los comandos de instrucción de proceso debug Assert y debug Mensaje.

Error log

Si se ha cometido algún error la especificación de alguna fórmula de algún comando de instrucción del proceso , éste será mostrado en esta pestaña. Realiza la misma verificación que el verificador del asistente para edición de fórmulas.

Ámbito de actuación

Se pueden depurar procesos y manejadores de eventos ejecutados desde vClient en primer plano.

Es posible depurar procesos que son llamados desde otros procesos o manejadores que se estén ejecutando en 1º plano.

Se pueden depurar funciones. Pero no se puede entrar en ellas cómo se entra en un proceso, es decir, si se llama a una función de proceso, se pasa por la línea, con lo que para hacer debug de la función debemos poner un punto de interrupción en la función de proceso.

No es posible depurar procesos ejecutados desde vDataClient.

No es posible depurar procesos ejecutados en 2º o 3er plano.

No es posible depurar triggers de tablas en disco ni procesos ejecutados desde los triggers. Para estos casos recomendamos al programador que pase la tabla a memoria o copiar el código en un proceso y ejecutarlo desde un botón de un formulario o una acción, por ejemplo.

No es posible depurar eventos disparados con la señal de pre-inicialización del marco de la aplicación.

Si ejecutamos en debug un proceso de un proyecto que está protegido, el sistema solicitará que se introduzca la contraseña de edición del proyecto, si se introduce la contraseña válida, continuará la depuración, en caso contrario, se detendrá.

Última actualización