При разработке и сопровождении конфигураций на платформе 1С:Предприятие разработчики нередко сталкиваются с ситуацией, когда точки останова расставлены в модулях, приложение запущено, но при выполнении алгоритма (например, при проведении документа или нажатии кнопки на форме) отладчик полностью игнорирует точки останова. Программа отрабатывает код без прерываний, как будто отладка отключена.
Разберем детально, почему это происходит и какие шаги необходимо предпринять для восстановления полноценной отладки клиентского и серверного кода.
В клиент-серверном варианте работы платформы процедуры и функции могут выполняться на стороне сервера (в модулях объектов, менеджеров, общих серверных модулях, обработчиках проведения). По умолчанию служба сервера 1С (ragent.exe) запускается без режима отладки. В этом случае отладчик может перехватывать только клиентский код, а весь серверный контекст выполняется без остановок.
Чтобы разрешить отладку серверных вызовов, запустим службу агента сервера с ключом -debug. Проанализируем порядок действий в операционной системе Windows:
regedit).HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent... (название службы может немного отличаться в зависимости от версии и разрядности).ImagePath.-debug в строку запуска службы.services.msc).Посмотрим на пример правильной строки запуска службы в параметре ImagePath:
"C:\Program Files\1cv8\8.3.9.1850\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -debug -d "C:\Program Files\1cv8\srvinfo"
Обратим внимание, что параметр -debug можно указывать как перед каталогом данных -d, так и в самом конце строки запуска. После перезапуска службы сервер будет готов передавать контекст исполнения отладчику.
Если служба сервера уже запущена с флагом -debug, но точки останова по-прежнему не срабатывают, выясним причину через встроенный монитор предметов отладки.
Откроем меню Отладка → Подключение.... В открывшемся окне отображается список доступных и подключенных предметов отладки (клиентские сеансы, фоновые задания, серверные вызовы, внешние соединения):
Чтобы отладчик автоматически подхватывал все создаваемые потоки и серверные вызовы без необходимости вручную подключать их каждый раз, настроим параметры автоподключения:
ФоновыеЗадания.Выполнить();Если отладка включена, сеанс подключен, но платформа не останавливается, важно проверить: доходит ли управление до нужного участка кода вообще. Для этого воспользуемся инструментом Замер производительности:
Если точки останова не работают после выполнения предыдущих шагов, рассмотрим другие скрытые причины:
&НаКлиенте, &НаСервере, &НаСервереБезКонтекста) и блоки препроцессора (#Если ТолстыйКлиентОбычноеПриложение Тогда). Если запуск выполняется в тонком клиенте, а код обернут в условие обычного приложения, этот блок не будет компилироваться и выполняться.Последовательная проверка ключа -debug, автоподключения предметов отладки и доступности портов позволяет гарантированно устранить проблемы с точками останова в любых режимах работы 1С:Предприятия.