Не работает отладка

Хитрости отладки в 1С

Не работает отладка

Отладка – это основной инструмент которым должен овладеть начинающий программист. Без отладки написание любой более менее сложной функции и\или объекта превратиться в настоящую муку. Сам я выбираю такой способ, хорошо себя зарекомендовавший себя: пишу блок кода в 50-100 строк не останавливаясь и не проверяя отладчиком.

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

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

  • Запуск отладчика производится с панели, нажатием на соответствующую кнопку (F5):
  • Чтобы остановить отладчик на нужной строке, надо поставить красную точку (двойным кликом) слева от строки, она называется точка останова:
  • После того как отладчик остановится на строке выделяем любую переменную и жмем Shift+F9 (или кнопку на панели вверху)
  • Переход по строкам, с заходом в вызываемые процедуры – F11
  • Переход по строкам, не заходя в процедуры которые вызываются в вашем коде – F10

Крайние важные особенности отладки в 1С

  • Если необходимо быстро перейти к строке, на которой платформа “вываливается” с ошибкой, то необходимо установить флаг “Останавливаться по ошибке”:
  • Если в есть подозрение что где то в коде спрятана “попытка\исключение” и вы не можете найти это место, хотя есть мнение что она отсекает крайне важное для вас событие, то необходимо установить этот же флаг остановки. При ошибке в блоке “попытка..исключение” отладчик остановится на этой строке.
  • Если программа зависла на выполнении, допустим где-то бесконечный цикл, то можно легко перейти на строку, которая выполняется в данный момент, если нажать Меню “Отладка – Остановить”.
  • Если вы находитесь в процедуре и не знаете откуда она была вызвана – необходимо вызвать окно “стек вызовов”, в нем будет видно всю цепочку вызова процедур:
  • При обнаружении ошибки необходимо не прекращая отладки менять код и идти дальше. Интересная особенность, только что измененный код часто можно сразу же проверить на работоспособность. Например у вас есть код “Если А=Б Тогда” в результате отладки вы понимаете что код надо поменять. Даже если отладчик спустился уже на строку ниже смело меняем на “Если АБ Тогда”, тутже выделяем блок “АБ” и жмем Shift+F9, в окне вычисляющим выражение будет уже новый код и значение вычисленное по этому новому куску кода.

Как запустить отладчик от имени другого пользователя

  1. В конфигураторе нажать “Сервис – Параметры” и задать имя пользователя на вкладке “Запуск 1С:Предприятия”:
  2. Затем запустить отладчик в требуемом режиме:
  3. В итоге на экран будет выдано окно авторизации под заданным пользователем:

Отладка в клиент-серверном режиме

В режиме клиент-сервер, начинающего программиста ждет сюрприз,  отладчик прекрасно “входит” в процедуры “на клиенте” но дойдя до вызова серверной процедуры не заходит в нее, а как бы проходит строку, если вы бы вы нажали “шагнуть через F10”. Причина проста – отладчику необходим доступ к серверной части 1С, и пока вы его не откроете вы не сможете отлаживать “серверный” участок кода.

Как включить отладку на сервере. Все очень просто необходимо изменить параметры запуска службы 1С-сервера:

  1. Открываем реестр (на ПК где крутится сервер 1С:предприятия) – пуск – regedit
  2. Ищем в реестре виндоус службу 1С, примерно по такому пути: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\1C:Enterprise 8.3 Server Agent
  3. В ключе ImagePath добавляем параметр “-debug”, не забываем оставить пробелы.
  4. После правки реестра перезапускаем службу через панель управления – .. службы.
  5. Готово! Теперь отладчик будет заходить внутрь серверных модулей\процедур.

У пользователя проблема, как к нему подключиться и отладить кусок кода

Бывают ситуации когда возникает трудноуловимая ошибка и появляется только у одного пользователя. Если ошибку пользователю удается воспроизвести, можно подключиться отладчиком к уже запущенному процессу пользователя и отладить процедуру. Как сделать:

  1. В запущенной программе пользователя поставить флаг разрешающий отладку в этом сеансе. В меню – сервис – параметры – отладка в текущем сеансе.
  2. запустить рядом конфигуратор и нажать меню “отладка” – “подключение” – в списке “доступные предметы отладки” появится сеанс проблемного пользователя.

Подключение к web-сервису, подключение к фоновому заданию

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

Включение перехвата:

  1. Установить точку останова на процедуре, которую необходимо отладить.
  2. Меню “отладка” – “подключение” – “автоматическое подключение…”- установить флажок “web-сервисы..\фоновые задания”.
  3. Дальше ждем когда точка останова сработает – готово! сеанс перехвачен.
  4. Далее если ваша база более менее “живая”, необходимо убрать вышеустановленные флажки и только затем продолжить отладку процедуры. Если этого не сделать то при переходе к следующей строке у вас начнется чехарда с перескоками между строк. Ведь к вам будут подключаться все новые и новые фоновые задания и web-сервисы.

Источник: https://codexp.ru/interesnoe/zametki-po-1s/18-khitrosti-otladki-v-1s

Режим отладки 1С сервера или как включить Debug | МАРС Телеком

Не работает отладка

Тема включения режима отладки на сервере 1С весьма актуальна, по ней в сети Интернет написано много интересных статей, но большинство из них не полностью решают проблему. Если перед тобой стоит задача включения режима отладки на сервере 1С, то эта статья несомненно поможет в этом!

Из официальных источников мы имеем следующую информацию:

Выдержка из документа «Клиент-серверный вариант. Руководство администратора»

/debug

Запуск кластера серверов в режиме отладки конфигураций. Параметр указывает, с использованием какого протокола будет функционировать отладчик на данном кластере серверов:

  • -tcp ‑ протокол TCP/IP;
  • -http ‑ протокол HTTP.

Значение по умолчанию: -tcp.

СОВЕТ. В связи с тем, что в режиме отладки производительность сервера падает, рекомендуется использовать отладочный режим только для тех серверов, на которых выполняется отладка.

/debugServerAddr

ВАЖНО! Выдержка взята с сайта its.1c.ru.

Думаю, мало кому из нас этого будет достаточно, чтобы без дополнительных источников информации и знаний запустить 1С в режиме отладки.

Допустим, ты отвечаешь за ИТ инфраструктуру и к тебе подходит программист 1С, чтобы попросить запустить 1С в режиме отладки.

Поздравляю! Программист 1С не является доменным администратором и не смог произвести настройку самостоятельно. Вопросы безопасности и чувства самосохранения не на последнем месте.

1С в серверном варианте требует комплексного подхода, который достигается наличием достаточных компетенций у специалистов из разных направлений – программист 1С, системный администратор, администратор баз данных.

И когда речь уже заходит об отладке приложения, универсальные солдаты «тыжсисадмин» и «тыжпрограммист» уже не актуальны. На данном уровне навыки для системного администратора и программиста 1С сильно разнятся и совмещать их, оставаясь профессионалом с большой буквы «П», уже невозможно.

Как запустить сервер 1С в режиме отладки правильно?

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

Есть несколько вариантов, но рассмотрим самый ходовой – изменение значения параметра реестра Windows.

  1. Открываем реестр на сервере, где установлен сервер 1С.

  2. Переходи по следующему пути:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent (x86-64)

    Имя раздела может отличаться в зависимости от версии сервера 1С – 8.2 / 8.1 или его архитектуры – 32 / 64 битный.

  3. Здесь нас интересует параметр ImagePath, а точнее его значение, которое и надо дополнить ключом «debug».

    ПРИМЕЧАНИЕ! В разных статьях указаны различные варианты запуска режима отладки и это может ввести в заблуждение. Ключ «debug» можно добавлять в любое место после “C:\Program Files\1cv8\8.3.13.1644\bin\ragent.exe” и использовать как знак «-», так и «/».

    Например, будут одинаково работать:

    “C:\Program Files\1cv8\8.3.13.1644\bin\ragent.exe” -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d “C:\Program Files\1cv8\srvinfo” -debug

    и

    “C:\Program Files\1cv8\8.3.13.1644\bin\ragent.exe” /debug -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d “C:\Program Files\1cv8\srvinfo”

    Первый вариант смотрится предпочтительней.

    На выходе должно получиться следующее:

  4. Перезапускаем службу «Агент сервера 1С:Предприятия 8.3 (x86-64)».

Поздравляю – режим отладки включен!

Осталось проверить его работу.

Самый простой способ проверки работы режима отладки 1С на сервере

Настраиваем фаервол.

Если платформа 1С для проведения отладки будет запускаться не на сервере 1С, на стороне клиента должны быть открыты TCP и UDP порты для диапазона 1560-1591.

На стороне сервера должны быть открыты TCP порты 1540, 1541, 1560-1591.

ПРИМЕЧАНИЕ! Эти порты устанавливаются по умолчанию, если вы их меняли, то в фаерволе надо будет открыть новые.

Проверяем работу отладчика:

  1. Запускаем конфигуратор.
  2. Заходим в меню «Отладка» — «Начать отладку» или нажимаем клавишу «F5». Запустится платформа 1С в режиме предприятия.
  3. Не закрывая 1С предприятие, переходим в меню «Отладка» — «Подключение…».

Если столбец «Тип» заполнен значением «Сервер», то всё работает. Идём писать письмо программисту 1С.

ПРИМЕЧАНИЕ! Если сервер и клиент – не один сервер, ставим галочку «Искать предметы отладки на удаленном компьютере»: и указываем сервер 1С.

В блоке «Доступные предметы отладки:» столбец «Тип» должен быть заполнен значением «Сервер». Если у вас так, то всё работает.

Арендуя сервер для 1С в компании МАРС Телеком, вы всегда сможете получить помощь наших технических специалистов по этому и другим вопросам.

Источник: https://marstel.ru/base/lessons/rezhim-otladki-1s-servera-ili-kak-vklyuchit-debug

Поделиться:
Нет комментариев

    Добавить комментарий

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.