1с отладка не останавливается на точке останова
(1) Добавил, строка поменялась на:
"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"
стартанул службу, результата нет.
(2) Делаю так: Запускаю приложение в режиме отладки. В конфигураторе включаю замер производительности. Нажимаю "Перепровести" иду назад в конфигуратор, выключаю замер производительности а мне в ответ никакого окна не выдаёт.
(5) Точно, другого нет.
(6) Закрыл приложение запущенное в режиме отладки. Окна нет.
(7) Занимаюсь по книге Радченко. Всё что озвучено до 451 страницы слышал, остальное скорее всего нет.
Херня, я только начал, до этого успешно программировал на других языках. А 1С пришлось взять только потому, что невозможно найти нормально 1Сника в Москве. Либо ленивые ущербки, либо гиперактивные наркоманы(в прямом смысле этого слова), но и те и другие крайне не исполнительны и то что они говорят, на то наплевать и забыть. )) Даже за хорошие деньги )
Просто очень сложно перестроиться на такое чудо как конфигуратор 1С, после того как долгое время пользовался продукцией JetBrains как средой разработки.
1C:Enterprise Development Tools - обещали в сентябре наконец стартануть, может хоть чуть чуть поинтереснее станет.
Тем не менее даже с тривиальными задачами уже столкнулся с "недокументированным поведением" платформы. И сейчас тоже похожий вариант. Все нужные аргументы прописаны, а как не было реакции на точки останова, так и нет.
Геодезисты, falselight, пинатель апдекса, теперь вот это - я начинаю понимать всю глубину глубин ужаса модераторов.
(11) открою страшную тайну: 1Сники есть не только в Нерезиновой. Да и >>Либо ленивые ущербки, либо гиперактивные наркоманы. У нас не пролетают.
(13) Хочешь доказательство? Помимо частников нанимали 1сБИТ, чтобы произвели внедрение и обучение УТ 10 (на тот момент). Так они даже установить его нормально не смогли ))) Переустанавливали разные специ, разных уровней, но никак не могли определить почему внезапно сервер перестаёт видеть базу данных. На том и закончили работу. Со словами "У всех работает, у вас нет. Значит проблемы у вас."
Мне пришлось лезть самому. По итогу смог разобраться. Эти чудаки не отключили протокол IPv6, как результат. Когда на запрос имени localhost приходил IPv6 сервер 1С на тот момент видимо не понимающий его впадал в ступор и терял связь с БД. Месяц длились их потуги. ))
(15) Вовсе нет. Просто в 1С принцип "Хочешь сделать хорошо? Сделай это сам!" работает как нигде )
(17) Бро, я просто понимаю, что в 1С могут быть какие нибудь скрытые камни, с которыми можно промудохаться с неделю самому. Поэтому попытавшись сам разобраться с час и погуглив написал сюда вопрос, почему же не работают точки останова? Ведь всё сделано чётко в соответствии с инструкциями.
(19) >> 1сБИТ
ну эти любят "почудить" во-всех регионах. Работать нужно не обязательно с теми, у кого "куча" сертификатов и внедрений.
(19) мне не нужны доказательства. (11) - это либо вранье, либо профнепригодность кадровиков и ИТ-руководителя, которые проводят собеседования.
Настройка серверного оборудования - это вообще не к 1Сникам ни разу, для этого должен быть системный администратор.
А в местах, где вместо системного администратора 1сник, разговоры про "за хорошие деньги" - смешны.
(22) Что именно системный администратор должен был знать? Что сервер 1С не умеет IPv6? У системного администратора всё отлично работало. Весь остальной софт тоже. Но почему то системный администратор смог выяснить что сервер 1С не умеет IPv6, а обвешанные с ног до головы сертификатами специалисты (Их было не меньше 4-х штук) не смогли ))
Вот тебе второе, с июля месяца изменилась форма СФ. 1С программист поменял форму. И ему уже фиг знает сколько раз было сказано: Сделал? Проверь!
В результате менеджеры под конец дня заметили, что первая позиция в СФ печатается на каждом листе СФ. Общая сумма сходится, но одна строка с позицией на каждой странице, кроме первой лишняя. ))) Вот такая вот фигня.
Но господа почему же всё таки нет реакции на точки останова при работа с серверной БД, при то аргумент -debug прописан.
Но господа почему же всё таки нет реакции на точки останова при работе с серверной БД, при том, что аргумент -debug прописан.
(23) открой меню отладка. подключение
что ты там видишь? Там пусто? Сколько там предметов отладки и какие они?
У меня в реестре параметр дебаг в конце стоит и все работает, и база серверная? "C:\Program Files\1cv8\8.3.9.2233\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug
Те, кто хоть раз работал с отладчиком VBA, мечтают о том, чтобы и в 1С можно было изменять значения переменных и переходить на любую точку кода.
Все не обещаю, но некоторые возможности доступны с помощью косметических вмешательств в конфигурацию.
Применение этих функций основано на том, что в табло отладчика в режиме Конфигуратора или 1С:Предприятия можно вызывать доступные в контексте точки останова функции. Примеры нужно вводить в табло Ctrl+Alt+W или в окно просмотра значения выражения Shift+F9 и сразу же получать результат.
Функция ДУ
Эта функция позволяет в любой момент выполнить любой код на языке 1С над любыми данными, переданными ей.
Примеры:
= Сообщает некий текст
= Присваивает переменной Отказ значение истина
= В отладчике нельзя вызвать процедуру, но можно это сделать через ДУ:
Функция Присвоить
Всем известно, что в 1С80 нельзя по хоту отладки менять значения переменных.
Однако есть выход!
В общем модуле объявите функцию:
Теперь вы можете в любой момент присвоить значение переменной.
Отладка в типовой конфигурации
А что же делать, если вам досталась отладка конфигурации, в которой нет этих замечательных функций?
Все очень просто. Создайте внешнюю обработку, занесите в ее модуль эти функции с ключевым словом экспорт и вызывайте их например так:
Манипуляции со стеком.
Для меня было приятной неожиданностью, когда я обнаружил, что можно смотреть переменные на разных уровнях стека.
Нужно открыть окно стека (Ctrl+F3), перейти на нужны уровень и ввести в табло имя переменной.
Лучше всего это рассмотреть на примере рекурсивной функции:
Поставьте в этой функцию точку останова и вы увидите что на разных уровнях стека переменная А принимает разные значения.
Прерывание работы программы
К сожалению, в 1С 80 можно прекратить работу некоторого кода только прекратив работу всего 1С:Предприятия. Так сказать, для борьбы с головной болью нужно отрубить голову. :)
Но не все так плохо.
С помощью функции Присвоить вы можете присвоить какому-нибудь критическому объекту программы значение Неопределено или ноль и как только программа попробует получить реквизит или метод этого объекта возникнет ошибка и работа кода прекратится.
Например вы находитесь в точке:
Теперь, как только выполнение кода дойдет до строки с "Если", возникнет ошибка и выполнение прекратится.
Упреждающий просмотр
Иногда при отладке сложновложенных функций неизвестно, имеет ли смысл отлаживать данную конкретную функцию по шагам, или лучше выполнить ее не заходя внутрь для детальной отладки.
В таких случаях удобно посмотреть в окошке просмотра значения, какое значение возвращает данная фунцкия и если она возвращает значение, которое нам интересно, выполнить отладку.
Изменение кода на лету
Если у вас много кода выполняется в операторе Выполнить, то лучше этот код занести в некоторую переменную, чтобы при случае можно было изменить этот код. Расскажу случай из практики.
Отлаживал я как-то одну обработку по обмену данными - там было много кусков кода, выполняющихся через Выполнить. Вот беда случилась - загружали мы большой файл (многометровый) и так обидно, если грузится он час, а потом вылетает на какой-нибудь мелкой ошибке в коде, которая была не выявлена на этапе отладки, всегда в самых неожиданных местах.
Маялись мы маялись, а потом придумали - все вызовы Выполнить были вынесены в одну функцию, куда передавался код для выполнения и параметры. Это нам и сослужило хорошую службу.
Мы вставили Выполнить в Попытка-Исключение и если происходило исключение, предлагали программисту вживую изменить код. Если он соглашался, открывался диалог ввода кода, где он мог заменить старый код на новый. И перед выполнение кода мы проверяли, имеется ли он в списке замен. Если имеется, то мы перед выполнением подменяли старый код на новый. Так нам удалось быстро загрузить данные.
Отладка на сервере
Чтобы съэкономить вам нервы, сообщаю, что отлаживать код, который выполняется на сервере (в трехзвенке), невозможно. Поэтому если у вас программа в файловом варианте останавливается на точке останова, а в серверном - нет, не пугайтесь, так и задумано. Ведь код выполняется на сервере приложений и не может поэтому отлаживаться на клиенте.
Условная точка останова
Не все знают, что в 1С 80 есть условная точка останова - точка останова по условию. Однако это очень полезный механизм.
Трассировка
Для этих целей в 1С можно использовать условную точку останова, т.к. условие проверяется на каждом проходе кода через условную точку останова.
На указанной строке ставим точку останова с условием:
Сумма:1
Сумма:3
Сумма:6
Сумма:10
Сумма:15
Сумма:21
Сумма:28
Сумма:36
Сумма:45
Сумма:55
Управление кодом
Предположим у нас есть такой код:
В таком случае мы можем применять программное управление кодом.
На начале оператора Если ставим условную точку останова:
Т.е. если А=1 то мы присваиваем А значение 2, и присваиваем 1 в противоположном случае.
Это позволяет, не меняя конфигурацию, постоянно перенаправлять код на нужную нам ветку.
Можно просто поставить условную точку останова, которая будет присваивать А нужное значение:
Обозримая трассировка
Если вы вставляете в код много функций Сообщить для трассировки хода выполнения программы, то потом порой бывает проблематично найти все такие трассировочные вызовы.
Если трассировка временно не нужна, ее нужно убрать так:
Теперь достаточно открыть эту внешнюю обработку и десктоп настроится. В следующий раз эта обработка уже будет в списке недавно открытых файлов.
Более простой вариант для ленивых - в табло написать вычисление выражений (например с помощью ДУ), которые откроют нужные документы и журналы. Легко и быстро!
Еще один простой вариант - использование истории отборов. Тогда вам нужно только сделать отбор по нужному документу, обязательно закрыть 1С крестиком, а не через прекращение отладки (чтобы сохранились условия отбора), а затем после запуска 1с зайти в нужный список и нажать историю отбора.
Отладка клиент-серверной базы
Использование внешней обработки
Часто, когда код базы менять нельзя, а поиграться хочется или когда код выполняется на сервере и нет возможности его отладить, помогает использование внешней обработки.
Для этого нужно скопировать код во внешнюю обработку и поотлаживать уже внешнюю обработку, по ходу меняя код и просматривая переменные.
Подсовывание тестовых данных
Иногда в базе сложно получить пример, при котором выполняется некое экзотическое условие.
В таком случае проще подсунуть тестовые данные.
Например, если в коде обрабатывается некоторая таблица значений, можно прямо в коде прописать очистку этой таблицы значений и заполнение ее новыми данными, при которых выполняется это экзотическое условие.
Для тех, кто не любит портить код ради отладки, можно посоветовать с помощью функции ДУ вызвать внешнюю обработку, которая заполнит таблицу значений как нам надо (например считает ее из макета).
Отладка блокировок
Иногда нужно посмотреть, как ведут себя два параллельных процесса.
Простейший способ отладки таких ситуаций - вставить в коде вызов процедуры Предупреждение().
Например, в событии ПриЗаписи объекта вставляем вызов Предупреждение("Идет запись объекта. ").
Тогда если открыть другую сессию и попытаться записать объект, выдастся предупреждение, что объект заблокирован.
Если такая отладка вызывается часто, рекомендую такой способ вызова сразу двух сессий 1С.
Из отладчика нажимаете F5 (Запустить отладку), запускается 1С:Предприятие. Отключаетесь от отладки этого 1С Предприятия - "Отладка"->"Отключиться", затем еще раз нажимаете Ф5. В итоге вторая сессия у вас подключена к отладчику. Запускаете код с предупреждением в первой сессии и отлаживаетесь во второй.
Ускорение отладки
Отладчик снижает скорость работы программы.
Поэтому можно поступить так - отключить отладчик, а в нужном месте вывести Предупреждение();
Когда выведется предупреждение, можно опять подключить отладчик, поставить точку останова и начать отладку.
Решение
Добрый день!
У меня клиент-сервер.
Отладка на сервере включена.
Но почему то не срабатывают точки в Общем модуле -ОтветственныеЛицаБППовтИсп и ОтветственныеЛицаБППереопределяемый.
Однако в вызывающей их функции ОтветственныеЛицаБП.ОтветственныеЛица остановка происходит как полагается.
Подскажите, в чем может быть проблема?
Добавлено через 10 минут
Вопрос неактуальный, стоило перезапуститься и проблема ушла сама.
Не работают точки останова
Платформа 1С:Предприятие 8.3 (8.3.4.482) Конфигурация Управление торговлей, редакция 11.1.
Не работают точки останова
Работаю с ВПФ, в файловом режиме. Игнорируются точки останова, вообще. В гугле рассказывают про.
Не работают точки останова
народ, проблема такова: не работают точки останова в той области текста программы где они должны.
Не работают точки останова
Делаю сайт на SilverLight почти всю работу сделал оставалось сделать пару моментов и тут вдруг при.
Решение
Модули с галкой Повторное использование(на время сеанса) кешируют результат своих функций, точку останова можно поставить только с чистым кешем. (перезапустить сеанс)
Не работают точки останова
Здравствуйте, столкнулся с такой проблемой, что непонятно с чего вдруг перестали работать точки.
Atmel Studio 7 - не работают точки останова
Добрый день. При отладке программы, точки останова устанавливаются (Atmel Studio 7), но при запуске.
Не работают точки останова 64х Rad Studio 10.1
Не могу нормально сделать отладку приложения при компиляции на 64 бита. Просто не работают точки.
Отладка програм на Silverlight, не работают точки останова
Не работают точки останова если отладка идет в браузере. Ставил отладку в не браузера, так точки.
Точки останова (Breakpoint)
Не останавливается выполнение кода при компиляции, как настроить точку останова (Breakpoint) на xe5.
Разберем основные случаи когда и почему не работает отладка 1С.
1. В списке предметов отладки не видны серверные сеансы
Возможно сервер 1С запущен не в режиме отладки. Для того чтобы включить режим отладки, службу сервера 1С нужно запустить с ключом -debug. Пошаговый разбор как это сделать тут.
2. В списке предметов отладки не видны ни клиентские ни серверные сеансы.
Еще одной причиной отсутствия предметов отладки в списке является то, что предметы отладки находится не на том компьютере где запущен отладчик 1С. Актуально как для серверных так и для клиентских сеансов. Для решения проблемы обычно достаточно указать имя удаленного компьютера для поиска предметов отладки и обновить список.
Если и после этого список пустой, то нужно вбить вместо имени IP-адрес удалённого компьютера. В случае если это помогло, то рекомендуется прописать привязки имен и IP-адресов компьютеров в файле hosts. Если и это не помогло то необходимо проверить настройку фаервола, разрешены ли на сервере 1С (или удаленном клиенте) входящие соединения с компьютера где запущен отладчик на порты 1560-1591.
3. В списке предметов отладки не видны клиентские сеансы.
Причина как правил в том, что не разрешена отладка клиентского приложения. Для разрешения отладки клиентского сеанса достаточно в настройках программы в режиме 1С Предприятие указать в параметре «Отладка в текущем сеансе» — Разрешена TCP/IP.
4. Предмет отладки виден в конфигураторе и подключается, но точка останова все равно не срабатывает на строке кода.
Данная проблема актуальна при отладке по протоколу TCP. Причина в том что отладчик не может принимать входящие соединение из-за того что брандмауер или фаервол блокируют сетевое взаимодействие между отладчиком и предметом отладки. Тут нужно понимать, что отладчик не только устанавливает исходящее соединение с предметом отладки, но также должен иметь возможность принимать входящее соединение. Проблема решается отключением фаервола на компьютере где запущен отладчик либо открытием входящих соединений на портах 1560-1591 для исполняемого файла 1cv8.exe.
5. Программный код выполняется в сеансе фонового задания.
В типовых конфигурациях 1С широко использует запуск длительных процедур в фоновом режиме. Для этого на сервере запускается отдельный фоновый сеанс помимо основного серверного сеанса пользователя. Проблема решается включением автоматического подключения отладчика к фоновым сеансам. После этого как правило отладка начинает работать, если нет проблем с фаерволом описанных выше.
Подводим итоги
Напоследок стоит отметить, что как правило отладка производиться на тестовом сервере 1С, который запускается на портах отличных от типового диапазона 1560-1561. Поэтому, все изложенное выше в части номеров портов, следует рассматривать в контексте ваших реально используемых диапазонов портов.
Для настройки отладки в конфигураторе 1С надо зайти через главное меню в раздел Отладка – Подключение… Откроется форма подключения к сеансам для отладки. Если конфигуратор запущен на сервере 1С и есть активный серверный или клиентский сеанс, то в разделе «Доступные предметы отладки» сразу можно увидеть строки с указанием пользователя и типа сеанса клиент или сервер.
Форма подключения и настройки отладки в Конфигураторе 1С
В принципе, на этом вся настройка может быть закончена, можно выбрать нужный сеанс и подключиться к нему для отладки. Однако, часто бывает что мы увидим пустой список предметов отладки. Если это ваш случай, то читаем дальше.
Итак, при настройке отладки в конфигураторе 1С надо учесть два момента.
Первое, если вы запустили Конфигуратор не на сервере 1С, то для поиска предметов отладки надо указать имя или IP адрес сервера 1С (если хотим отлаживать не серверный, а клиентский сеанс другого пользователя, то соответственно клиентского компьютера). Для этого ставим флажок «Искать предметы отладки на удалённом компьютере» и рядом в поле вводим имя компьютера, например – srv1c.
Второе. Бывают случаи, когда сервер 1С (тестовый к примеру) запущен не на типовых портах по умолчанию из диапазона 1560-1591, а, например, на портах 1660-1691. Тогда надо по кнопке «Настройка» в форме настройки отладчика указать тот диапазон портов для поиска предметов отладки который был задан в строке запуска службы сервера 1С. В моем случае ставим диапазон 1560-1900, это потому что у меня есть еще запущены тестовые сервера 1С на диапазонах портов 1760-1791 и 1860-1891. После этого нажимаем в правом верхнем углу значок «Обновить» и видим появившиеся предметы отладки. Видно что у серверного сеанса порт указан 1660, это как раз тот сеанс который подключен к тестовому серверу 1С, запущенному на диапазоне портов 1660-1691.
Теперь можно выбрать нужный сеанс и нажать кнопку «Подключить», предмет отобразиться в нижней части формы в разделе «Подключенные предметы отладки».
Все, после этого, запускаем на выполнение программу и отладчик должен остановиться на точке останова, которую вы поставили на сроке кода. В стеке вызовов можно посмотреть где в данный момент выполняется код, на сервер или на клиенте.
Если после всех настроек список доступных предметов отладки так и остался пустым, то следует проверить включен ли режим отладки на сервер 1С. Вот здесь можно посмотреть как включить отладку на сервере 1С.
Если же вам надо подключиться к клиентскому сеансу, то надо проверить включена ли доступность отладки у этого клиентского сеанса. Для это в режиме 1С:Предприятие открываем меню Настройки — Параметры…
В окне настройки параметров в поле «Отладка в текущем сеансе» выбираем «Разрешена (протокол TCP/IP)», то же можно указать в поле «Отладка при перезапуске», чтобы каждый раз не выполнять данную настройку в случае многократного перезапуска клиентского сеанса.
После этой настройки в конфигураторе обновляем список доступных предметов отладки, если все сделано правильно, там должен появится данный клиентский сеанс.
Теперь нам не надо вручную искать предмет отладки и нажимать кнопку «Подключить». Система сама подключиться к запущенному сеансу и сработает точка останова поставленная на строке кода.
Читайте также: