Работаю на стенде развернутом на .Net Core (3.1.32).
Столкнулся с проблемой - при отладке серверного кода не выполняется вход в точку останова в Microsoft Visual Studio 2019/2022 (точка не закрашивается в красный). Пишет что "не загружены символы". Пересобирал проект, перезагружал пулл и т.д. и т.п.
Нюанс в том, что на этом же ПК развернут и стенд на .Framework и на нем все хорошо, и без проблем точка останова работает.
Перепробовал уже все советы в комьюнити и ничего пока не помогло.
не, ну вы можете осуществить WS-канал между клиентом-сервером, обернуть отлаживаемый код в try-catch и ошибки отсылать на клиент, а на клиенте их обрабатывать и показывать как вам будет удобно, но это слегка тяжеловесно
мб вы не знаете, но в консоле браузера есть вкладка Network (chrome) где можно посмотреть подробно все запросы к серверу и ответы от него. Большинство ошибок с сервера вываливаются туда в читаемом виде. Но это не подходит для фоновых процессов (происходящих вне рамок текущей веб-сессии), в т.ч. БП.
В облаке использовать такие инструменты возможности нет. Как вариант решения можно запросить базу и дистрибутив в поддержке и развернуть локальную среду разработки, отлаживать и переносить на продуктив после окончания разработки.
"Алла Савельева" написал:Каким образом можно отладить конфигурационный сервис в bpm'online on-demand?
Либо лепить костыли (как в старые добрые):
1) Скачать и установить дополнение "консоль sql запросов"
2) Добавить объект в конфигурацию с 1-2 varchar полями
2) В сервис напихать море try/catch + кучу логгеров в этот самый объект (чтобы писались ошибки/шаги выполнения и т.п.)
"Варфоломеев Данила" написал:
1) Скачать и установить дополнение "консоль sql запросов"
2) Добавить объект в конфигурацию с 1-2 varchar полями
2) В сервис напихать море try/catch + кучу логгеров в этот самый объект (чтобы писались ошибки/шаги выполнения и т.п.)
Здравствуйте!
Первый пункт лишний - можно создать справочник на основании созданного объекта и фильтровать по справочнику. Или выгрузить содержимое в Excel и изучать логи там.
Ознакомился со статьей Отладка серверного кода, пытаюсь начать отладку некоторого действия бизнес- процесса.
Например, у меня есть некоторое задание- сценарий, где я пишу -
// Создание экземпляра запроса, добавление в запрос колонок и источника данных.
Select selectQuery = new Select(UserConnection)
.Column("Id")
.Column("Name")
.From("Contact");
// Выполнение запроса к базе данных и получение результирующего набора данных.
using (DBExecutor dbExecutor = UserConnection.EnsureDBConnection())
{
using (IDataReader reader = selectQuery.ExecuteReader(dbExecutor))
{
while (reader.Read())
{
// Обработка результатов запроса.
}
}
}
return true;
При попытке компиляции возникло: ошибок - 3, предупреждений - 2
В ходе кодогенерации компиляция не удалась и файлов символов, соответственно, нет - точки останова не срабатывают:
The breakpoint will not currently be hit.
No symbols have been loaded for this document.
Сгенерированный код, который я пытаюсь отладить в Visual Studio -
Нужно- ли определять директивы using в действии "Задание- сценарий"?
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Data;
using Terrasoft.Common;
using Terrasoft.Core;
using Terrasoft.Core.DB;
using Terrasoft.Core.Entities;
...
Если да, то они тоже попадут в тело метода ScriptTask1Execute.
Как правильно написать серверный код в действии "Задание- сценарий", чтобы его можно было отладить в MS Visual Studio? Особенно, если на вход действия подается некий параметр события, который в IDE определяет как undefined?
В 7.7 есть особенности использования UserConnection в БП.
Подробнее можно ознакомиться в теме: http://www.community.terrasoft.ru/forum/topic/14645
Директивы using указываются один раз для всего процесса. Делается это структуре процесса (боковая панель).
Также можно указать флаг принудительная компиляция для элемента или процесса и он будет всегда компилироваться, тогда Вам не нужно будет использовать данный подход.
Возникла некоторая необходимость отладить код в элементе бизнес- процесса "Задание- сценарий", а именно - там есть определенный запрос к базе данных, расчеты и последующая вставка результатов в ряд таблиц.
В ..\Terrasoft.WebApp\Web.config настроил выгрузку исходных кодов C# в процессе кодогенерации -
...
...
Подключил библиотеки Terrasoft.
Собственно, пытаюсь отладить какой- нибудь простой запрос, вроде такого -
...
var select = new Select(userConnection)
.Column("Id")
.Column("Name")
.From("Contact");
...
- возникает вопрос, как настроить класс UserConnection... Был бы весьма признателен за информацию, без отладчика весьма и весьма грустно.
Алексей, для отладки есть еще ряд флагов в конфигах. Подробнее на скриншоте:
Для отладки нужно приаттачиться VS к вашему процессу w3wp.exe (если их несколько, то можно различать по имени пользователя, от которого запущен пул приложения)
В студии открываете выгруженный код, ставите точки останова в нужных местах.
Для получения текста запросов:
- для классов Select,Update,Delete есть метод GetSqlText() и свойство BuildParametersAsValue, которое нужно устанавливать в true для явного получения параметров;
- для классов ESQ есть метод GetSelectQuery(UserConnection), который возвращает объект класса Select, а из него уже можно получить текст запроса.
Также для просмотра запросов к БД можно использовать SQL Profiler
Здравствуйте, Владимир!
Отлаживать в среде программирования не получится, но можно логировать все, что требуется.
Вывод производится в файл "Common.log" так как логгер создан для типа «ScriptingNamespace.ScriptingReport»
Добавить в необходимый метод (BeforePrint) логгер
var log= global::Common.Logging.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
С помощью планировщика заданий настроил запуск экспорта в 1С заказа поставщику (утилита синхронизации, функция ExportObject). В этой функции установил точку останова для отладчика (debugger). Планировщиком функция вызывается и возникает окно выбора отладчика, выбираю MS Visual Studio и появляется пустое окно отладчика.
Кто знает как мне отладить с помощью дебагера скрипт функции (хочу увидеть передаваемые в нее параметры)?
Здравствуйте, Андрей!
Если вариант Дмитрия Вам не подходит, то проверьте, подсоединен ли Visual Studio к процессу. Также прошу предоставить скриншот, иллюстрирующий проблему.
Дмитрий, спасибо за ссылку.
Проверил из клиента Террасофт - скрипт отрабатывает нормально, а вот при вызове через планировщик заданий - не отрабатывает корректно. Мне все-таки нужно каким-то образом отладить именно выполнение скрипта самим планировщиком заданий.
Андрей, здравствуйте.
Начнем с простого. Создал тестовый пример, вот настройки:
Служба планировщика заданий запущена:
По полю "Последний запуск" видно, что задание планировщиком запускается:
А в реальности никакого диалогового окна не появляется. Как добиться его появления? Как отлаживать такую ситуацию?
"Андрей Каспаревич" написал:Андрей, попробуйте в настройках Visual Studio отключить отладку Managed и Native кода
Попробовал - в таком случае отладка вообще не возникает.
Андрей, у вас получилось отработать корректно то тестовое плановое задание, которое я привел в пример?
Андрей, не проверял. Но уточнил информацию по поводу взаимодействия с графическими элементами.
Так вот, функции, шаг выполняться не будет в том случае, если в нем происходит обращение к любым графическим компонентам.
Прикрепляю полезную информацию по поводу планировщика. faq.docx nastroyka_planirovshchika_zadaniy_3.4.docx tsmailsystem.zip
Немного дополню, отсутствие возможности отладки связано с тем, что планировщик запускается как служба, а Visual Studio не умеет отлаживать службы, только процессы.
Использовать отладчик в BPMonline можно только в том случае, если система развернута у Вас локально – для базы OnDemand этого сделать не получится.
Настройка:
1. В Web.config добавить ключ IncludeDebugInformation
Обратите внимание, для версии 5.2 и младше Web.config находится в корневой директории. Для версии 5.3 и выше - в директории Terrasoft.WebApp
После изменения Web.config необходимо перезапустить сервер IIS
2. Затем следует опубликовать хотя бы одну схему в конфигурации (сгенерировать исходный код). В результате в папке %TEMP%\BPMonline\Src появятся файлы с расширением .cs с исходным кодом конфигурации на C#, которые используются для сборки dll-библиотеки конфигурации (TSBpm.dll), подключаемой в сборку по завершении генерации исходных кодов.
3. Для отладки необходимо:
a. открыть в Visual Studio .cs-файл той схемы, на которой мы хотим отлаживаться
b. установить в нем в интересующем нас месте точку останова средствами Visual Studio
c. Присоединиться к процессу сервера IIS, запущенного на машине и выполнить те действия, которые приведут скрипт в точку останова
Отсюда уже можно отлаживаться обычными средствами.
Анна, мне кажется тут не хватает еще одного пункта. В самой студии следует указать какие именно ошибки отлавливать: Открыть окно настроек можно комбинацией Ctrl+Alt+E после того как присоединишься к процессу сервера IIS.
К какому процессу подключаться, если используется не IIS Express? Где искать исходный код, если процесс IIS запущен под системной учетной записью? Если пишите о чем то, пишите о условиях, в которых можно воспользоваться этой возможностью.
Открыла в студии файлик страницы, присоединилась к процессу, указала брейкпойнт в Init-e, но при открытии этой страницы в BPM перехода в точку не происходит
Для того, чтобы отладка работала, нужно, чтобы файлы схем были сгенерированы в текущей сесссии IIS.
Попробуйте удалить все файлы, сгенерировать исходный код для любой из схем, и только затем открывать ее в Visual Studio и устанавливать точку останова.
Добрый день!
Открываю файл для отладки, присоединяюсь к процессу IIS w3wp.exe, но перехода к точке останова не происходит.
При присоединении к процессу значок точки останова меняется и пишется сообщение:
В настоящий момент попадания в точку останова не произойдет. Нет загруженных символов для данного документа.
Дмитрий, у 7.0 другое ядро, и возможность отладки конфигурации on-site доступна только при наличии исходников. Пожалуйста, опишите задачу, которую Вам необходимо реализовать, и направьте запрос в техническую поддержку по адресу support@terrasoft.ru - Вам предоставят оптимальное решение.
Илья, уточните, пожалуйста, какая у вас версия BPMonline? Очень похоже, что вы пытаетесь отлаживать 7.Х, а у нее другое ядро и отладка без исходных кодов невозможна.
Для отладки конфигурационного c# кода в 7.х нужно:
1) В файле connectionstrings.json указать, куда будет выгружены исходные коды при компиляции, это параметр
2) В файле Terrasoft.WebApp\Web.config флаг установить в true
3) Перезапустить пул и сайт приложения
4) В конфигурации для нужной схемы вызвать действие «Сгенерировать исходный код»
5) Скомпилировать конфигурацию. Если все правильно настроено, на этом этапе в папке, указанной в первом пункте появятся исходные коды и символы для отладки:
Оба параметра находятся в файле Web.config директории Terrasoft.WebApp.
1. Параметр пути выгрузки исходного кода: CompilerSourcesTempFolderPath.
Например: add key="CompilerSourcesTempFolderPath" value="c:\src\BPM\" /
Добрый день, после того , как был переустановлен Террасофт у меня не работает debugger. На компьютере установлен и MS Script Debugger и MS Edit Script.
Ознакомилась с ссылкой https://community.terrasoft.ru/forum/topic/7007, у меня окне JIT-отладчика появляется MS Script Debugger.
Но в момент, когда в скрипте есть ошибка, это окно для выбора отладчика не появляется, а появляется просто сообщение об ошибке.
На команду debugger , написанную в скрипте, реакции нет.
Как сделать так, что бы все же переходить в отладчик ?
"Яворский Алексей" написал:Хочу заметить, что в случае если пользователь не администратор на компьютере, то он обязательно должен входить в группу "Debugger Users"