Справка по MetaEditor

Отладка

Довольно сложно избежать ошибок при написании относительно сложных программ. В MetaEditor встроен отладчик, помогающий решить эту проблему. Отладка приложений заключается в возможности пошагового выполнения программы с вычислением значений локальных переменных, установке точек останова в заданной позиции.

Для того чтобы начать отладку, активным должно быть окно основного файла проекта (*.MQ4 или *.MQ5). Для отладки включаемых файлов (*.MQH) необходимо запустить отладку того файла, в который они входят.

Далее пошагово будет рассмотрен процесс отладки программ:

Предварительная настройка

Перед началом отладки программы следует проверить ее параметры на вкладке "Отладка" в окне настроек MetaEditor. В нем может быть указан символ и период графика, на котором будет происходить отладка приложений. Такой график будет временно создаваться каждый раз при начале отладке и удаляться сразу после ее завершения.

К графику, создаваемому для отладки, применяется шаблон "debug.tpl", расположенный в папке /profiles/templates клиентского терминала.

Точки останова

Точка останова — это команда, срабатывающая при переходе исполнения программы к указанной строке, и останавливающая ее выполнение в этом месте. Точки останова позволяют исследовать поведение программы в указанном месте: просмотреть значения переменных, стек функций. В дальнейшем процесс отладки может быть возобновлен или прекращен.

Перед запуском отладки необходимо установить точки останова в необходимых позициях кода. Для этого необходимо дважды щелкнуть левой кнопкой мыши на сером поле рядом с левой границей строки с кодом. Также можно установить курсор в необходимой строке и выполнить команду "Переключить точку останова Переключить точку останова" в меню "Отладка" или на панели инструментов "Стандартная", либо нажать клавишу "F9". Выключение точек останова происходит таким же образом.

Включенная точка останова

Запуск отладки

Для того чтобы запустить процесс отладки, необходимо открыть файл программы, выбрав его в окне "Навигатор". Далее следует выполнить команду "Начать Начать" в меню "Отладка" или на панели инструментов, или нажать клавишу "F5". После этого отлаживаемая программа будет прикреплена к специальному графику в торговом терминале. Как только исполнение программы дойдет до той строки, где указана первая точка останова, она будет остановлена. Точка, на которой остановилось выполнение примет вид Сработавшая точка останова. Также в окне "Инструменты" появится вкладка "Отладка". В левой ее части будет показан стек вызова функции.

Отладка приложений происходит в реальных условиях на ценовых данных, поступающих от сервера. Специальный временный график, создаваемый для отладки, ничем не отличается от обычных графиков, открываемых в терминале.

Наблюдаемые выражения

В процессе отладки можно отслеживать значения различных выражений (переменных), получаемых на данном этапе исполнения программы. Для этих целей предназначена правая часть вкладки "Отладка" окна "Инструменты". Выражение может быть добавлено следующими способами:

  • Во время отладки вызвать контекстное меню на необходимом выражении и выбрать команду "Добавить наблюдение Добавить наблюдение" или нажать сочетание клавиш "Shift+F9";
  • В правой части вкладки "Отладка" окна "Инструменты" вызвать контекстное меню и выполнить команду "Добавить Добавить", либо нажать клавишу "Insert". После этого появится новая строка, в поле "Выражение" которой необходимо ввести название отслеживаемого параметра.
  • Для того чтобы изменить название отслеживаемого выражения необходимо дважды щелкнуть левой кнопкой мыши на его названии, либо выделить его и выполнить команду "Правка" в контекстном меню или нажать клавишу "F2".

Просмотр стека и значений выражений

В окне наблюдения за выражениями можно совершать несложные математические вычисления (сложение, вычитание, умножение и деление), а также просматривать значения в конкретных точках массива. Например, указав запись A[3][4], где A — это название массива, а 3 и 4 — это позиции в его измерениях. При добавлении объектов в наблюдаемые выражения можно показать список их членов, указав в конце точку или нажав клавиши "Ctrl+Space":

Посдтановка членов объектов

По умолчанию, целые числа отображаются в окне наблюдения в десятичном виде. Чтобы вывести значение в двоичном или шестнадцатеричном виде, в поле "Выражение" укажите через запятую модификатор b или x соответственно.

Просмотр выражений в двоичном и шестнадцатеричном виде

Просмотр стека вызовов

Для просмотра стека предусмотрена левая часть вкладки "Отладка" окна инструментов. В ней отображаются:

  • Название файла из которого был вызов функции;
  • Название функции;
  • Номер строки в файле, где эта функция была вызвана.

При запуске процесса отладки в данном окне отображается только адрес вызванной функции, на которой установлена сработавшая точка останова.

Пошаговая отладка

Для пошаговой отладки с просмотром стека вызовов используются команды меню "Отладка" или панели инструментов "Стандартная":

  • Шаг с заходом Шаг с заходом — пройти один шаг выполнения программы с заходом в вызываемые функции. Это же действие может быть выполнено с помощью клавиши "F11".
  • Шаг с обходом Шаг с обходом — пройти один шаг выполнения программы без захода в вызываемые функции. Это же действие можно выполнить, нажав клавишу "F10".
  • Шаг наружу Шаг наружу — переход к выполнению одного шага программы на один уровень выше. Это же действие может быть выполнено с помощью клавиш "Shift+F11".

Для выполнения вышеуказанных команд процесс отладки должен находиться в прерванном состоянии. Это происходит автоматически, когда выполнение программы доходит до точки останова. Также отладка может быть прервана вручную нажатием кнопки "Приостановить Приостановить" в меню "Отладка" или на панели инструментов "Стандартная", или нажатием клавиши "Break".

В то время как программа находится в точке останова, наступление событий продолжается. При этом они устанавливаются в очередь, и их обработка экспертом будет продолжена после выхода из кода текущего обработчика события.

Приостановка, возобновление и завершение отладки

Остановка процесса выполнения программы во время отладки происходит автоматически, как только он доходит до строки, в которой установлена точка останова. Однако процессом отладки можно управлять вручную:

  • Приостановка выполнения
    Выполнение программы в процессе отладки может быть прервано вручную при помощи команды "Приостановить Приостановить" в меню "Отладка" или на панели инструментов, или нажатием клавиши "Break". После этого также можно выполнять пошаговую отладку.
  • Возобновление выполнения
    Для того чтобы возобновить выполнение программы в процессе отладки после ее прерывания автоматически или вручную, необходимо выполнить команду "Продолжить Продолжить" в меню "Отладка" или на панели инструментов, или нажать клавишу "F5".
  • Завершение отладки
    Для того чтобы прекратить отладку программы, необходимо выполнить команду "Завершить Завершить" в меню "Отладка" или на панели инструментов, или нажать клавишу "Shift+F5". После остановки программа будет снята со специального графика, на который она была наложена для отладки, а сам график будет закрыт.

Без исходных MQ4, MQ5 и MQH-файлов отладка невозможна. Также не рекомендуется распространять исполняемые EX4/EX5 файлы, полученные в процессе отладки.

Отладка на истории

Отладка торговых роботов и технических индикаторов может быть запущена не только на ценовых данных, обновляющихся в режиме реального времени, но и на исторических. Работу программы можно поверить на интересующем участке истории. Отладка происходит в режиме визуального тестирования в тестере стратегий. Программа запускается на графике, который строится по смоделированной в тестере последовательности тиков.

Чтобы запустить отладку на истории, задайте параметры запуска тестирования в настройках MetaEditor.

Настройка отладки на истории

Расставьте точки останова в коде программы, а затем запустите отладку на исторических данных.

Запуск отладки на истории

После этого будет запущено визуальное тестирование и начнется процесс отладки.

Отладка на истории