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

 

скажите есть ли возможность проходить программу в MQL4 по шагам что бы отладить. и контролировать в процессе значение переменных ? так же как это в VBA возможно ?

 
К сожалению, нет. Но можно визуально отлаживать экспертов, запуская тестер в визуальном режиме.
 
EX4 файлы являются скомпилированным и оптимизированным p-кодом(ассемблерным кодом) для виртуальной машины MQL4 и не содержат никаких упоминаний об переменных или именах функций. Поэтому уже ничего нельзя узнать состояние переменных.

К сожалению, добавить отладочную информацию в EX4 код не сможем, так как это повлечет изменение формата - чего мы допустить не можем.
 
При желании добавить отладочнуй информацию, ее можно записать в отдельный файл, который будет использоваться отладчиком. EX4 файл может остаться без изменений.
 
Renat писал (а):
К сожалению, нет. Но можно визуально отлаживать экспертов, запуская тестер в визуальном режиме.

Ясно ...
 
Mak писал (а):
При желании добавить отладочнуй информацию, ее можно записать в отдельный файл, который будет использоваться отладчиком. EX4 файл может остаться без изменений.

Можно конечно.... но сервис немного не тот :)))) хотя конечно в MQL4 других плюсов много....
 
Mak писал (а):
При желании добавить отладочнуй информацию, ее можно записать в отдельный файл, который будет использоваться отладчиком. EX4 файл может остаться без изменений.

Или ввести два режима компиляции: Debug и Release. Пора, наверное, познакомить MQL4 разработчиков с возможностями остальных современных сред разработки. Понимаю, платформа новая, но вывод данных через Print() в журнал сродни отладке выводом через echo"" тестовых данных в веб страницы на PHP. Это далеко от возможности поставить точки останова и увидеть в плавающем окне-панели или всплывающей подсказке наведением мышью значения переменных.
Для примера укажем на Microsoft Visual Studio 6.0, .NET 2002/2003/2005.

Опять же, понимаю, что MQL платформа ещё сравнительно новая.
 
chv:
Mak:
При желании добавить отладочнуй информацию, ее можно записать в отдельный файл, который будет использоваться отладчиком. EX4 файл может остаться без изменений.

Или ввести два режима компиляции: Debug и Release. Пора, наверное, познакомить MQL4 разработчиков с возможностями остальных современных сред разработки. Понимаю, платформа новая, но вывод данных через Print() в журнал сродни отладке выводом через echo"" тестовых данных в веб страницы на PHP. Это далеко от возможности поставить точки останова и увидеть в плавающем окне-панели или всплывающей подсказке наведением мышью значения переменных.
Для примера укажем на Microsoft Visual Studio 6.0, .NET 2002/2003/2005.

Опять же, понимаю, что MQL платформа ещё сравнительно новая.
Я даже и не могу представить реакции разработчиков - они наверно со смеху валялись :)
 
Я все-таки нашел возможность ставить брекпоинты. Делаю это так:
1) Пишу dll, с отладочными функциями, главное назначение которых - принять аргументы из mql4.
2) В местах кода, где нужно поставить брекпоинт, пишу вызов одной из отладочных функций.
3) Запускаю отладку dll в Visual Studio, выбирая в качестве запускающего процесса terminal.exe. Бряки ставлю в Visual Studio на отладочные функции. Интересующие меня значения переменных передаю в VS как аргументы отладочных функций.
Понимаю конечно что через задницу, но ЭТО РАБОТАЕТ. А вообще-то думаю расставаться с mql4. До уровня нормального С он очень здорово не дотягивает. Например отсутствие структур дико неудобно. Кроме того нет никакой гарантии, что mql5 тоже будет С-подобным языком. А потому идеальным мне кажется код, написанный на С/С++, с тоненькой прослойкой mql4, для связи с терминалом.

Ренат, отладочную информацию в ex4 вводить совсем необязательно. Можно просто формировать её в отдельном файле. Это тем более легко, если ex4 представляет собой код для виртуальной машины. Я сам уже применял такой подход для отладки на языке Forth. Там тоже простая виртуальная машина и компилятор для неё. Немного меняется только сам код виртуальной машины. А формат исполняемых файлов не меняется. Может и вам пойти по такому пути ?
 
Rosh:
chv писал (а):
Mak писал (а):
При желании добавить отладочнуй информацию, ее можно записать в отдельный файл, который будет использоваться отладчиком. EX4 файл может остаться без изменений.

Или ввести два режима компиляции: Debug и Release. Пора, наверное, познакомить MQL4 разработчиков с возможностями остальных современных сред разработки. Понимаю, платформа новая, но вывод данных через Print() в журнал сродни отладке выводом через echo"" тестовых данных в веб страницы на PHP. Это далеко от возможности поставить точки останова и увидеть в плавающем окне-панели или всплывающей подсказке наведением мышью значения переменных.
Для примера укажем на Microsoft Visual Studio 6.0, .NET 2002/2003/2005.

Опять же, понимаю, что MQL платформа ещё сравнительно новая.
Я даже и не могу представить реакции разработчиков - они наверно со смеху валялись :)

Отчего же валялись? Могу поспорить на $1, что они видят VC++ и debugger каждый день. Или они тоже пишут саму среду MT4 принтовкой переменных?
 
Я так и не понял - "они видят VC++ и debugger каждый день" или необходимо "познакомить MQL4 разработчиков с возможностями остальных современных сред разработки."?
Или я не правильно понял фразу?
Причина обращения: