Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
MetaQuotes Software Corp.
Модератор
189035
MetaQuotes Software Corp.  

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

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

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

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

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

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

Автор: Nikolay Demko

Комбинатор
16602
Комбинатор  

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

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

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

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

Nikolay Demko
12612
Nikolay Demko  
TheXpert:

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

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

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

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

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

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

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

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

MetaQuotes
Админ
25423
Renat Fatkhullin  

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

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

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

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

Комбинатор
16602
Комбинатор  
Renat:

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

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

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

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

Dmitiry Ananiev
8888
Dmitiry Ananiev  

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

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

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

MetaQuotes
Админ
25423
Renat Fatkhullin  

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

Bonifacy
269
Bonifacy  
Renat:

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

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

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

Eugeniy Lugovoy
1985
Eugeniy Lugovoy  
Bonifacy:

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

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

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

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

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

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

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