Ayuda de MetaEditorDesarrollo de programasDepuración del código

Depuración del código

El MetaEditor tiene un depurador integrado, una herramienta que le permite poner a prueba un programa en varios pasos (por funciones individuales). Usted puede colocar puntos de interrupción en el código del programa: los lugares donde debe suspenderse la ejecución del programa. Luego ejecute el programa en un gráfico regular o en el simuldor de estretagias. Tan pronto como la ejecución del programa llegue al punto de interrupción, se detendrá. Podrá ver los valores de las variables calculadas y luego continuar la ejecución del programa manualmente por pasos, verificando el algoritmo de la operación.

Configuración previa #

Antes de comenzar la depuración, establezca sus parámetros generales en los ajustes del MetaEditor. Podrá indicar el símbolo y el periodo del gráfico para el que va a realizarse la depuración de aplicaciones. Este gráfico se creará temporalmente cada vez que se inicie la depuración y será eliminado tras su finalización.

Al gráfico que se crea para la depuración se le aplica la plantilla "debug.tpl", ubicada en la carpeta /profiles/templates de la plataforma comercial.

Punto de interrupción #

Un punto de interrupción es un comando que se ejecuta al llegar la ejecución de un programa a la línea especificada, y que interrumpe su ejecución en este punto. Los puntos de interrupción permiten investigar el comportamiento del programa en un segmento determinado: ver los valores de las variables, la pila de funciones, etcétera. Luego usted podrá reanudar o finalizar el proceso de depuración.

Se debe establecer al menos un punto de interrupción en el código del programa antes de iniciar la depuración. Para hacer esto, haga doble clic en el cuadro gris a la izquierda de la línea de código. También podrá situar el cursor en la línea y pulsar "Alternar el punto de interrupción Alternar el punto de interrupción "en el menú "Depuración" o "F9". Los puntos de interrupción se desactivan de la misma manera.

Punto de interrupción activado

Para trasladarse rápidamente al punto en el que se ha interrumpido la ejecución del programa, pulse dos veces sobre la función en la ventana de visionado de la pila de llamada. Asimismo, a través del menú contextual de esta ventana es posible pasar al visionado de la lista de todos los puntos de interrupción en el programa a depurar:

Paso a un punto de interrupción

También es posible pasar a cualquiera de los puntos haciendo doble clic sobre el mismo.

Iniciar depuración #

Para iniciar la depuración, abra el archivo archivo principal de programa o el proyecto. La depuración se puede hacer en dos modos:

  • Con datos reales. Se inicia con el comando "Comenzar con datos reales Comenzar con datos reales" en el menú "Depuración" o con la tecla "F5". En este modo, el programa depurado se ejecuta en un gráfico especial en la plataforma comercial. La depuración de aplicaciones se lleva a cabo en condiciones reales con los datos de los precios que llegan desde el servidor.
  • Con datos históricos. Se inicia con el comando "Comenzar con datos históricos Comenzar con datos históricos" en el menú "Depuración" o con las teclas "Ctrl+F5". En este modo, el programa se inicia en el simulador de estrategias. Este permite comprobar el funcionamiento en cualquier segmento de la historia, sin esperar la aparición de determinadas condiciones de mercado. Por defecto, se usa el modo de simulación no visual, para no gastar recursos en el dibujado de elementos gráficos. En caso necesario, podrá activar el modo visual en los ajustes del MetaEditor.

Tan pronto como la ejecución del programa en el modo de depuración llega a la línea con un punto de interrupción, se detendrá. La línea en la que se ha detenido la ejecución se marcará con un iconoPunto de interrupción alcanzado. Además, en la ventana "Caja de herramientas" aparecerá la pestaña "Depuración". En su parte izquierda se mostrará la pila de llamadas de la función.

Activación del punto de interrupción tras iniciar la depuración

Expresiones observadas #

Durante el proceso de depuración se pueden observar los valores de diferentes expresiones (variables) que se reciben en esta etapa de ejecución del programa. Para eso sirve la parte derecha de la pestaña "Depuración" de la ventana "Caja de herramientas". Para rastrear los valores de una expresión, agréguela a las observadas:

  • Durante la depuración, coloque el cursor sobre la expresión en el código fuente y haga clic en "Agregar observaciónAgregar observación" en el menú contextual.
  • Pulse "Agregar Agregar" en el menú contextual del lado derecho de la pestaña "Depurar". Luego ingrese el nombre de la expresión en la línea que aparece.
  • Para cambiar el nombre de la expresión rastreada, haga doble clic en ella.

Ver la pila y valores de la expresión

También podrá activar la visualización automática de las variables locales en la lista de observaciones. Para ello, seleccione la opción "Locales" del menú contextual. Durante la depuración, las variables del ámbito actual se mostrarán automáticamente en la lista a medida que se avance en el código.

En la ventana de observación de expresiones se pueden realizar cálculos matemáticos sencillos (sumar, restar, multiplicar y dividir), así como ver los valores en los puntos concretos de la matriz. Por ejemplo, indicando la entrada A[3][4], donde A es el nombre de la matriz, 3 y 4 son posiciones en sus dimensiones. Durante la agregación de objetos en las expresiones observadas, se puede mostrar la lista de sus miembros poniendo un punto al final o pulsando las teclas "Ctrl+Space":

Insertar miembros de objetos

Para visualizar el contenido de una matriz u objeto, clique dos veces sobre estos en la ventana de observación.

Por defecto, los números enteros se muestran en la ventana de observación en forma decimal. Para mostrar el valor en forma binaria o hexadecimal, en el campo "Expresión", especifique el modificador b o x, respectivamente, separados por una coma.

Visualización de expresiones en forma binaria y hexadecimal

Ver la pila de llamadas #

La pila de llamadas se rellena con información para devolver el control de las subrutinas (funciones anidadas) al programa (el manejador principal de eventos para OnInit, OnTick, etcétera). En la pila, podrá seguir todo el camino desde la aparición de los eventos en la plataforma comercial hasta la llamada de una función específica.

Para cada función, se muestra la siguiente información:

  • El nombre del archivo desde el que se ha llamado la función.
  • El nombre de la función.
  • Número de la línea del archivo donde esta función ha sido llamada.

Depuración paso a paso

Para la depuración paso a paso con la posibilidad de ver la pila de llamadas se utilizan los comandos del menú "Depurar" o la barra de herramientas "Estándar":

  • Paso con entrada Paso con entrada – hacer un paso de ejecución del programa con la entrada en las funciones a las que se llama. La misma acción se realiza presionando la tecla "F11".
  • Paso sin entrada Paso sin entrada – hacer un paso de ejecución del programa sin la entrada en las funciones a las que se llama. La misma acción se realiza con la tecla "F10".
  • Paso fuera Paso fuera – ir a la ejecución de un paso del programa a un nivel superior. La misma acción se realiza con las teclas "Shift + F11".

Los comandos de la depuración paso a paso solo se pueden usar después de que el programa se pause en el modo de depuración:

  • Después de que el punto de interrupción se haya activado.
  • Después de interrumpir el programa manualmente con el comando "Pausa Pausa" en el menú "Depuración" o la tecla "Break".

Aparición de eventos en la plataforma comercialcontinúan incluso cuando el programa está en el punto de interrupción. Todos los eventos acaecidos se ponen en la cola, y el asesor seguirá con su procesamiento después de salir del código del manejador de eventos actual.

Detener, reanudar y finalizar la depuración #

La ejecución del programa durante la depuración se detiene automáticamente en cuanto se alcance la línea que contiene el punto de interrupción. Además, la depuración se puede controlar manualmente:

  • Pausar la ejecución
    La ejecución del programa durante el proceso de depuración se puede interrumpir manualmente con el comando "Pausa Pausa" en el menú "Depuración" o la tecla "Break". Después de pausar la ejecución, podrá usar los comandos de depuración paso a paso.
  • Reanudar la ejecución
    Para reanudar el programa después de la interrupción, haga clic en "Continuar Continuar" en el menú "Depuración" o "F5".
  • Finalizar la depuración
    Para detener la depuración del programa, haga clic en "Finalizar Finalizar "en el menú "Depuración" o "Shift+F5". El programa será eliminado del gráfico especial en el que se inició para la depuración, y el propio gráfico se cerrará.
  • Sin archivos fuente MQ4, MQ5 y MQH, la depuración no es posible.
  • No se recomienda difundir los archivos EX4/EX5 ejecutables obtenidos durante la depuración.

Depuración en la historia #

La depuración de robots comerciales e indicadores técnicos puede ser iniciada, no solo sobre los datos de precio que se actualizan en el modo de tiempo real, sino también sobre los históricos. El trabajo del programa se puede verificar en el sitio de interés, sin esperar ciertos eventos comerciales en tiempo real.

La depuración con datos históricos tiene lugar en el modo de prueba visual en el simulador de estrategias. El programa se ejecuta en el gráfico, que se construye de acuerdo con una secuencia de tick modelados en el simulador o con la historia de ticks acumulada (recibidos del bróker).

Para iniciar la depuración en la historia, indique los parámetros de inicio de la prueba en los ajustes del MetaEditor.

Ajustes de la depuración en la historia

Distribuya los puntos de interrupción en el código del programa, y a continuación inicie la depuración en los datos históricos.

Iniciar la depuración en la historia

Después se iniciará la prueba visual y comenzará el proceso de depuración.

Depuración en la historia