Справка по MetaEditorРазработка программОтладка кода

Отладка кода

В MetaEditor встроен отладчик — инструмент, который позволяет проверить работу программы по шагам (по отдельным функциям). Вы расставляете в коде программы точки останова — места, в которых исполнение программы должно быть приостановлено. Затем запускаете программу на обычном графике или в тестере стратегий. Как только исполнение программы дойдет до точки останова, оно будет прервано. Вы сможете посмотреть значения вычисленных переменных, а затем продолжить исполнение программы вручную по шагам, проверяя алгоритм работы.

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

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

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

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

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

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

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

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

Переход к точке останова

К любой из точек также можно перейти двойным кликом на ней.

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

Для запуска отладки откройте основной файл программы или проект. Отладку можно производить в двух режимах:

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

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

Срабатывание точки остановка после запуска отладки

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

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

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

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

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

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

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

Для просмотра содержимого массива или объекта дважды нажмите на него в окне наблюдения.

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

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

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

В стек вызовов заносится информация для возврата управления из подпрограмм (вложенных функций) в программу (основной обработчик события OnInit, OnTick и т.д.). В стеке вы можете посмотреть весь путь от возникновения события в торговой платформе до вызова конкретной функции.

Для каждой функции отображается следующая информация:

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

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

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

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

Команды пошаговой отладки можно использовать только после приостановки выполнения программы в режиме отладки:

  • После срабатывания точки останова.
  • После приостановки программы вручную командой "Приостановить Приостановить" в меню "Отладка" или клавишей "Break".

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

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

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

  • Приостановка выполнения
    Выполнение программы в процессе отладки может быть прервано вручную командой "Приостановить Приостановить" в меню "Отладка" или клавишей "Break". После приостановки выполнения вы можете использовать команды пошаговой отладки.
  • Возобновление выполнения
    Чтобы возобновить выполнение программы после прерывания, нажмите "Продолжить Продолжить" в меню "Отладка" или "F5".
  • Завершение отладки
    Чтобы прекратить отладку программы, нажмите "Завершить Завершить" в меню "Отладка" или "Shift+F5". Программа будет снята со специального графика, на котором она была запущена для отладки, а сам график будет закрыт.
  • Без исходных MQ4, MQ5 и MQH-файлов отладка невозможна.
  • Не рекомендуется распространять исполняемые EX4/EX5-файлы, полученные в процессе отладки.

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

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

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

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

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

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

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

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

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