Странное поведение дебаггера

 

Всем добре

2021.10.07 23:25:54.429 Terminal        FINAM MetaTrader 5 x64 build 3063 started for JSC Investment Company FINAM
2021.10.07 23:25:54.431 Terminal        Windows 10 build 19042, Intel Core i3-7300  @ 4.00GHz, 15 / 19 Gb memory, 97 / 222 Gb disk, IE 11, UAC, GMT+12
2021.10.07 23:25:54.431 Terminal        C:\Users\Ганов\AppData\Roaming\MetaQuotes\Terminal\975F0B6C62CEA2F897FEA3948B854284

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

Снял видео с экрана на всякий случай, чтобы было более понятно что к чему происходит:
 

Прошу подсказать почему:
-- редактор на второй и последующих запусках отладки уже не останавливается на точке
-- почему "сеанс" отладки не прекращается после нажатия в редакторе "Завершение отладки", а так и продолжает висеть в терминале
-- почему даже если в терминале вручную удалить все "сеансы" отладки, то все равно не произойдет остановки в точке останова

Проверял несколько раз, поведение IDE каждый раз одинаковое

Заранее благодарю за комменты

 
Как бороться с этой напастью: ставить не одну, а несколько точек останова одна под другой. И никуда тестер в таком случае не денется - остановится как миленький.
 
Aleksandr Ganov:

Всем добре

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

Снял видео с экрана на всякий случай, чтобы было более понятно что к чему происходит:
 

Прошу подсказать почему:
-- редактор на второй и последующих запусках отладки уже не останавливается на точке
-- почему "сеанс" отладки не прекращается после нажатия в редакторе "Завершение отладки", а так и продолжает висеть в терминале
-- почему даже если в терминале вручную удалить все "сеансы" отладки, то все равно не произойдет остановки в точке останова

Проверял несколько раз, поведение IDE каждый раз одинаковое

Заранее благодарю за комменты

Для отладки использование сервиса не совсем правильное решение. Вы запустили сервис, но его не остановили и запускаете снова.

 
Alexey Viktorov #:

Для отладки использование сервиса не совсем правильное решение. Вы запустили сервис, но его не остановили и запускаете снова.

понял. пробую остановить, почему и спрашиваю. что скорее всего сам что-то неверно делаю. попробовал, разницы нет. на остановленном сервисе то же самое, перезагрузка терминала и IDE помогает на 1 раз, то есть в первый раз также будет остановка, дальше нет. Странный момент, надо бы его понять, чтобы дальше двигаться

 
Vladimir Karputov #:
Как бороться с этой напастью: ставить не одну, а несколько точек останова одна под другой. И никуда тестер в таком случае не денется - остановится как миленький.

в том то и дело, что не останавливается, даже если в каждой из имеющихся строк поставить точку останова. первый раз остановится, а дальше - все. поэтому вопрос и задал, может я че не верно делаю. в VS или других IDE ни разу такой истории не встречал, поэтому озадачило такое поведение, привожу видео:

 
Aleksandr Ganov #:

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

Мне помогает такое при отладке кодов. Борюсь таким способом последние полгода.

 
Vladimir Karputov #:

Мне помогает такое при отладке кодов. Борюсь таким способом последние полгода.

Понял, спасибо за ответ. Странное поведение, конечно

 
Alexey Viktorov #:

Для отладки использование сервиса не совсем правильное решение. Вы запустили сервис, но его не остановили и запускаете снова.

Позволите еще тогда вопрос: если я 20 раз запущу один и тот же сервис верно пониманию, что будут созданы несколько параллельно работающих экземпляров  (по крайней мере так работает терминал). Где-то можно почитать что обозначает "сервис" с точки зрения объекта, запускается ли он в отдельном потоке, могут ли быть конфликты между сервисами с одинаковыми названиями, как получить текущую коллекцию запущенных сервисов и т.д. Не сильно пока почитал справка по MQL, но при "беглом" осмотре не обнаружил таких ответов. Если есть какие-то ссылочки буду признателен, чтобы понимать как в общем работают "программы" в МТ, как запускаются, есть ли взаимодействие между запущенными экземплярами и т.д.

 
Aleksandr Ganov #:

понял. пробую остановить, почему и спрашиваю. что скорее всего сам что-то неверно делаю. попробовал, разницы нет. на остановленном сервисе то же самое, перезагрузка терминала и IDE помогает на 1 раз, то есть в первый раз также будет остановка, дальше нет. Странный момент, надо бы его понять, чтобы дальше двигаться

Сервис останавливается так


 
Aleksandr Ganov #:

Позволите еще тогда вопрос: если я 20 раз запущу один и тот же сервис верно пониманию, что будут созданы несколько параллельно работающих экземпляров  (по крайней мере так работает терминал). Где-то можно почитать что обозначает "сервис" с точки зрения объекта, запускается ли он в отдельном потоке, могут ли быть конфликты между сервисами с одинаковыми названиями, как получить текущую коллекцию запущенных сервисов и т.д. Не сильно пока почитал справка по MQL, но при "беглом" осмотре не обнаружил таких ответов. Если есть какие-то ссылочки буду признателен, чтобы понимать как в общем работают "программы" в МТ, как запускаются, есть ли взаимодействие между запущенными экземплярами и т.д.

Всё это осваивается методом научно-технического тыка.

Как я понял, сервис — разновидность программы на MQL5. Прикреплённый сервис к графику, запускается вместе с запуском терминала и выполняется непрерывно.

 
Alexey Viktorov #:

Сервис останавливается так


именно так и делал 👌 спасибо за комменты. буду разбираться почему так странно работает, заодно и справку прочитаю более детально. может что-то где-то упускаю....

Причина обращения: