Скачать MetaTrader 5

Обсуждение статьи "Отладка программ на MQL5"

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Не понимаешь, как работает сервис Торговых Сигналов? Прочти соответствующую статью!
MetaQuotes Software Corp.
Модератор
181026
MetaQuotes Software Corp. 2013.03.01 08:47 

Опубликована статья Отладка программ на MQL5:

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

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

Существуют две дополняющие друг друга технологии отладки:

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

Процесс отладки. Наблюдение за значениями переменных.

Автор: Nikolay Demko

Комбинатор
15917
Комбинатор 2013.03.01 09:31  

По сути неплохо. Но.

1. Ни слова про утверждения (assertions) которые являются просто громадной помощью при отладке.

2. Трассировщик спорен, мягко говоря.

3. Необходимо упомянуть, что из-за оптимизации (компилятора) отладка сильно осложняется для простых функций из-за инлайнинга и предложить способы обхода этого недостатка.

Nikolay Demko
12461
Nikolay Demko 2013.03.01 09:50  
TheXpert:

По сути неплохо. Но.

1. Ни слова про утверждения (assertions) которые являются просто громадной помощью при отладке.

2. Трассировщик спорен, мягко говоря.

3. Необходимо упомянуть, что из-за оптимизации (компилятора) отладка сильно осложняется для простых функций из-за инлайнинга и предложить способы обхода этого недостатка.

1 и 3 подумаю (может даже доработаю статью), у каждого много своих приёмов, а трассировку предлагайте (вернее просто вставляйте ссылки, предложений уже было много).
MetaQuotes
Админ
24944
Renat Fatkhullin 2013.03.01 13:19  
TheXpert:

3. Необходимо упомянуть, что из-за оптимизации (компилятора) отладка сильно осложняется для простых функций из-за инлайнинга и предложить способы обхода этого недостатка.

В отладчике инлайнинг полностью отключается и проходка полностью по исходному коду как есть.

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

MetaQuotes
Админ
24944
Renat Fatkhullin 2013.03.01 13:24  

Но вот то, что написано тут, в корне неверно:

Хочу отдельно отметить, что компилятор MetaEditor транслирует программы в байт-код, а не нативный код (подробнее читаем по ссылке). Это дает возможность создавать защищенные шифрованием программы, не боясь взлома. Также преимуществом такой трансляции является то, что байт-код может быть запущен как в 32-х битной версии операционной системы, так и в 64-х битной.

На первом этапе компиляции хранится универсальный байткод, но при исполнении в терминале этот байт код полностью на 100% переводится в нативный 32 или 64 битный код с дополнительной оптимизацией. Именно за счет перевода в нативный код мы кратно подняли скорость исполнения MQL5 программ по сравнению с MQL4.

Чистый байткод без трансляции в натив был в MQL4.

Комбинатор
15917
Комбинатор 2013.03.01 15:08  
Renat:

В отладчике инлайнинг полностью отключается и проходка полностью по исходному коду как есть.

А давно так? Раньше это была большая проблема. Просто довольно давно не работал в 5ке.
MetaQuotes
Админ
24944
Renat Fatkhullin 2013.03.01 15:46  
TheXpert:
А давно так? Раньше это была большая проблема. Просто довольно давно не работал в 5ке.

С самого начала.

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

Dmitiry Ananiev
6569
Dmitiry Ananiev 2013.12.31 13:41  

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

Приходится по старинке Print пихать и отслеживать в тестере.

Все таки до Visual Studio местный отладчик  вообще не взлетает. Навел на переменную - она тебе значение, навел на выражение типа а+б /с - всплывает результат. В ME проще Print использвать .

MetaQuotes
Админ
24944
Renat Fatkhullin 2013.12.31 13:53  

Отладчик обязательно улучшим, как только закончим апгрейд МТ4. 

Bonifacy
269
Bonifacy 2014.08.06 20:07  
Renat:

Отладчик обязательно улучшим, как только закончим апгрейд МТ4. 

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

С уважением, Александр.

Eugeniy Lugovoy
1979
Eugeniy Lugovoy 2014.08.07 20:26  
Bonifacy:

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

С уважением, Александр.

Помнится, на 4-ке когда ни отладчика, ни структур еще не было приходилось отлаживать и MQL и DLL в паре. 

Поэтому утверждать что "пользоваться невозможно" тем, что есть сейчас, по крайней мере нелепо.

Кто хочет - ищет возможность. Сделали брейки, дебаг и на том спасибо, в модульной отладке помогает 100%. А глобально - можно и Print поставить по старинке.

А чтобы сделать MT5 популярным, необходимо уйти от MT4, остановить саппорт, обязать брокеров к переходу. Как произошло с MT4 билдами < 600. Это не от разработчиков зависит, тем более MQL-разработчиков. 

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий