Справка по 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.

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

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

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

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

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