Всех приветствую!

Работаю на стенде развернутом на .Net Core (3.1.32).

Столкнулся с проблемой - при отладке серверного кода не выполняется вход в точку останова в Microsoft Visual Studio 2019/2022 (точка не закрашивается в красный). Пишет что "не загружены символы". Пересобирал проект, перезагружал пулл и т.д. и т.п.

Нюанс в том, что на этом же ПК развернут и стенд на .Framework и на нем все хорошо, и без проблем точка останова работает.

Перепробовал уже все советы в комьюнити и ничего пока не помогло.

Возможно может кто-нибудь дать совет.

Спасибо!

Изображение удалено.

Нравится

2 комментария

Здравствуйте, Павел, 



Ниже я поделился документацией, которая может вам помочь, пожалуйста, проверьте все конфигурации: 



https://academy.creatio.com/docs/user/on_site_deployment/application_se…



С уважанием, 

Орхан Годжаев

Orkhan,

Спасибо за ответ!

Приложение работает на Windows. Не Linux. Возможно есть рекомендации именно для Windows?

Показать все комментарии

Доброго времени суток.

В системе включаю режим отладки. Всё работает. Переключаюсь на портал - не работает. Как отключить минификацию кода в all-combined.js на портале?

Заранее благодарен

Нравится

1 комментарий
Лучший ответ

Попробуйте включить режим отладки для конкретного пользователя через БД.

Таблица с настройками:

select * from SysSettingsValue

where SysSettingsId = 'F7827AB8-2EF2-4ACB-A28B-BFB7EB7A01C3'

 

Можно сделать insert например

GUID_USER - id пользователя, которому нужно включить отладку.

insert into SysSettingsValue

(SysSettingsId, SysAdminUnitId, BooleanValue)

VALUES ('F7827AB8-2EF2-4ACB-A28B-BFB7EB7A01C3', GUID_USER, 0)

 

Либо включить глобально для всех через системные настройки: Режим отладки (IsDebug)

 

Попробуйте включить режим отладки для конкретного пользователя через БД.

Таблица с настройками:

select * from SysSettingsValue

where SysSettingsId = 'F7827AB8-2EF2-4ACB-A28B-BFB7EB7A01C3'

 

Можно сделать insert например

GUID_USER - id пользователя, которому нужно включить отладку.

insert into SysSettingsValue

(SysSettingsId, SysAdminUnitId, BooleanValue)

VALUES ('F7827AB8-2EF2-4ACB-A28B-BFB7EB7A01C3', GUID_USER, 0)

 

Либо включить глобально для всех через системные настройки: Режим отладки (IsDebug)

 

Показать все комментарии

Каким образом можно отладить конфигурационный сервис в bpm'online on-demand?

Нравится

4 комментария

пишите в логи и запрашивайте их с ТП

Ха-ха-ха, Дмитрий - это один из самых "быстрых" способов отладки.

В любом случае, как за один из возможных вариантов решения, спасибо)

Ха-ха-ха, Дмитрий - это один из самых "быстрых" способов отладки.

В любом случае, как за один из возможных вариантов решения, спасибо)

не, ну вы можете осуществить WS-канал между клиентом-сервером, обернуть отлаживаемый код в try-catch и ошибки отсылать на клиент, а на клиенте их обрабатывать и показывать как вам будет удобно, но это слегка тяжеловесно
мб вы не знаете, но в консоле браузера есть вкладка Network (chrome) где можно посмотреть подробно все запросы к серверу и ответы от него. Большинство ошибок с сервера вываливаются туда в читаемом виде. Но это не подходит для фоновых процессов (происходящих вне рамок текущей веб-сессии), в т.ч. БП.

Показать все комментарии

Каким образом можно отладить конфигурационный сервис в bpm'online on-demand?

Нравится

3 комментария

Алла, здравствуйте!

Отладка конфигурационных сервисов, также как и остального C# возможна только в on-site, согласно статье https://academy.terrasoft.ru/documents/technic-sdk/7-7-0/otladka-server…

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

"Алла Савельева" написал:Каким образом можно отладить конфигурационный сервис в 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;

(Пример - Использование EntitySchemaQuery для построения запросов к базе данных)

Публикую, компилирую сборку и получаю в итоге -

При попытке компиляции возникло: ошибок - 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?

Был бы весьма признателен за информацию.

Спасибо.

--
С уважением, Алексей Быков.

Нравится

8 комментариев

В 7.7 есть особенности использования UserConnection в БП.
Подробнее можно ознакомиться в теме:
http://www.community.terrasoft.ru/forum/topic/14645
Директивы using указываются один раз для всего процесса. Делается это структуре процесса (боковая панель).

Александр, большое спасибо за ответ! Сейчас поизучаю.

Превосходно, очень признателен. То, что мне и нужно было.

Кстати сказать, попытался получить экземпляр класса UserConnection и некоторый параметр процесса таким образом:

var userConnection = Get("UserConnection");
var temp = Get("addedRecordId");

Ошибки компиляции:

Если использовать context.UserConnection, то все Ок.

Попробуйте явно указать тип для метода Get

var userConnection = Get<UserConnection>("UserConnection");
var temp = Get<Guid>("addedRecordId");

И судя по ошибкам temp у Вас объявляется 2 раза.

Также можно указать флаг принудительная компиляция для элемента или процесса и он будет всегда компилироваться, тогда Вам не нужно будет использовать данный подход.

Александр, спасибо еще раз!

Да, все верно, temp я объявил два раза. Попробую явно указать тип.

Да, если явно указать тип, то все Ок.

Показать все комментарии

Коллеги, приветствую.

Возникла некоторая необходимость отладить код в элементе бизнес- процесса "Задание- сценарий", а именно - там есть определенный запрос к базе данных, расчеты и последующая вставка результатов в ряд таблиц.

В ..\Terrasoft.WebApp\Web.config настроил выгрузку исходных кодов C# в процессе кодогенерации -

    ...
   
   ...

Подключил библиотеки Terrasoft.

Собственно, пытаюсь отладить какой- нибудь простой запрос, вроде такого -

...
var select = new Select(userConnection)
        .Column("Id")
        .Column("Name")
        .From("Contact");
...

- возникает вопрос, как настроить класс UserConnection... Был бы весьма признателен за информацию, без отладчика весьма и весьма грустно.

Спасибо.

--
С уважением, Алексей Быков.

Нравится

3 комментария

Я могу, конечно, использовать такой код -

using System.Data.SqlClient;
 
static void Main(string[] args)
{
 
	SqlConnection myConnection = new SqlConnection("user id=sa; password....");
 
	try
	{
		myConnection.Open();
		SqlDataReader myReader = null;
 
		SqlCommand myCommand = new SqlCommand("select Id, Name from Contact", myConnection);
		myReader = myCommand.ExecuteReader();
		while (myReader.Read())
		{
			Console.WriteLine(myReader["Id"].ToString());
			Console.WriteLine(myReader["Name"].ToString());
		}
	}
	catch (Exception e)
	{
		Console.WriteLine(e.ToString());
	}
}

- но как отладить такой -

var select = new Select(userConnection)
        .Column("Id")
        .Column("Name")
        .From("Contact"); 

Алексей, для отладки есть еще ряд флагов в конфигах. Подробнее на скриншоте:

Для отладки нужно приаттачиться VS к вашему процессу w3wp.exe (если их несколько, то можно различать по имени пользователя, от которого запущен пул приложения)

В студии открываете выгруженный код, ставите точки останова в нужных местах.

Для получения текста запросов:
- для классов Select,Update,Delete есть метод GetSqlText() и свойство BuildParametersAsValue, которое нужно устанавливать в true для явного получения параметров;
- для классов ESQ есть метод GetSelectQuery(UserConnection), который возвращает объект класса Select, а из него уже можно получить текст запроса.

Также для просмотра запросов к БД можно использовать SQL Profiler

Александр, спасибо огромное! То, что нужно.

Очень полезная статья в дополнение к видеокурсам по разработке на платформе 7.6: Отладка серверного кода

Показать все комментарии

Здравствуйте, коллеги!
bpmonline 7

можно ли как то отлаживать скрипты отчета BPMonlineReportDesigner в момент построения?

Нравится

2 комментария

Здравствуйте, Владимир!
Отлаживать в среде программирования не получится, но можно логировать все, что требуется.
Вывод производится в файл "Common.log" так как логгер создан для типа «ScriptingNamespace.ScriptingReport»
Добавить в необходимый метод (BeforePrint) логгер

var log = global::Common.Logging.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

Вывести текст выполняемого запроса

invoiceEsq.GetSelectQuery(userConnection).BuildParametersAsValue = true;
log.Debug(invoiceEsq.GetSelectQuery(userConnection).GetSqlText());

Вывод стека ошибки

try {
// код метода
} catch {
log.Debug(ex.Message, ex);
}

Настройки расположения файла лога хранятся в конфигурационном файле "../Terrasoft.WebApp/log4net.config".

Спасибо, Андрей!

Показать все комментарии

С помощью планировщика заданий настроил запуск экспорта в 1С заказа поставщику (утилита синхронизации, функция ExportObject). В этой функции установил точку останова для отладчика (debugger). Планировщиком функция вызывается и возникает окно выбора отладчика, выбираю MS Visual Studio и появляется пустое окно отладчика.

Кто знает как мне отладить с помощью дебагера скрипт функции (хочу увидеть передаваемые в нее параметры)?

TS XRM 3.4.1
Win XP SP3

Нравится

12 комментариев

Здравствуйте, Андрей!
Если вариант Дмитрия Вам не подходит, то проверьте, подсоединен ли Visual Studio к процессу. Также прошу предоставить скриншот, иллюстрирующий проблему.

Дмитрий, спасибо за ссылку.
Проверил из клиента Террасофт - скрипт отрабатывает нормально, а вот при вызове через планировщик заданий - не отрабатывает корректно. Мне все-таки нужно каким-то образом отладить именно выполнение скрипта самим планировщиком заданий.

Андрей, здравствуйте.
Начнем с простого. Создал тестовый пример, вот настройки:
Параметры задания

Параметры функции скрипта

Служба планировщика заданий запущена:
Служба

По полю "Последний запуск" видно, что задание планировщиком запускается:
Признаки

А в реальности никакого диалогового окна не появляется. Как добиться его появления? Как отлаживать такую ситуацию?

TS XRM 3.4.1
Win XP SP3

Андрей, попробуйте в настройках Visual Studio отключить отладку Managed и Native кода:

"Андрей Каспаревич" написал:Андрей, попробуйте в настройках Visual Studio отключить отладку Managed и Native кода

Попробовал - в таком случае отладка вообще не возникает.
Андрей, у вас получилось отработать корректно то тестовое плановое задание, которое я привел в пример?

а если вручную присоединиться дебаггером к TSJobManagerService.exe?

Андрей, не проверял. Но уточнил информацию по поводу взаимодействия с графическими элементами.
Так вот, функции, шаг выполняться не будет в том случае, если в нем происходит обращение к любым графическим компонентам.
Прикрепляю полезную информацию по поводу планировщика.
faq.docx
nastroyka_planirovshchika_zadaniy_3.4.docx
tsmailsystem.zip

"Андросов Дмитрий" написал:а если вручную присоединиться дебаггером к TSJobManagerService.exe?

Такого процесса в списке доступных процессов для подключения я не нахожу.

"Андрей Каспаревич" написал:Так вот, функции, шаг выполняться не будет в том случае, если в нем происходит обращение к любым графическим компонентам.

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

Но, все таки, можно каким-то образом выполнить отладку выполняемого шага планировщика заданий?

Андрей, завтра проведем тестирование и по результату Вам сообщим.

Андрей, извиняюсь за дезинформацию. Код, выполняемый планировщиком задач нельзя отладить.

Немного дополню, отсутствие возможности отладки связано с тем, что планировщик запускается как служба, а Visual Studio не умеет отлаживать службы, только процессы.

Показать все комментарии

Использовать отладчик в BPMonline можно только в том случае, если система развернута у Вас локально – для базы OnDemand этого сделать не получится.

Настройка:

1. В Web.config добавить ключ IncludeDebugInformation

       
       

111

Обратите внимание, для версии 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-файл той схемы, на которой мы хотим отлаживаться

222

b. установить в нем в интересующем нас месте точку останова средствами Visual Studio

111

c. Присоединиться к процессу сервера IIS, запущенного на машине и выполнить те действия, которые приведут скрипт в точку останова

333

111

Отсюда уже можно отлаживаться обычными средствами.

Нравится

Поделиться

23 комментария

Анна, мне кажется тут не хватает еще одного пункта. В самой студии следует указать какие именно ошибки отлавливать: Открыть окно настроек можно комбинацией Ctrl+Alt+E после того как присоединишься к процессу сервера IIS.

К какому процессу подключаться, если используется не IIS Express? Где искать исходный код, если процесс IIS запущен под системной учетной записью? Если пишите о чем то, пишите о условиях, в которых можно воспользоваться этой возможностью.

Максим, большое спасибо за дополнение :)

Алексей, благодарю за вопросы :)

"Агутин Алексей" написал:К какому процессу подключаться, если используется не IIS Express?

Если установлен полный IIS, следует подключаться к процессу w3wp.exe

Где искать исходный код, если процесс IIS запущен под системной учетной записью?

Если IIS запущен под системной учетной записью, тогда исходные коды конфигурации появляются в C:\Windows\Temp\BPMonline

Открыла в студии файлик страницы, присоединилась к процессу, указала брейкпойнт в Init-e, но при открытии этой страницы в BPM перехода в точку не происходит

Здравствуйте, Ольга!

Для того, чтобы отладка работала, нужно, чтобы файлы схем были сгенерированы в текущей сесссии IIS.

Попробуйте удалить все файлы, сгенерировать исходный код для любой из схем, и только затем открывать ее в Visual Studio и устанавливать точку останова.

Добрый день!
Открываю файл для отладки, присоединяюсь к процессу IIS w3wp.exe, но перехода к точке останова не происходит.
При присоединении к процессу значок точки останова меняется и пишется сообщение:
В настоящий момент попадания в точку останова не произойдет. Нет загруженных символов для данного документа.

Подскажите, пожалуйста, что это значит?

Прикладываю скрин

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

Нет, все равно ни в какую не подхватывается.

Странно. А раньше на этом компьютере всё работало (то есть настройки правильные) или это первая попытка отладить?

Нет, раньше отлаживал только TS 3.X.
Для BPMOnline 7 это первая попытка.

Тогда проверьте настройки конфиг-файлов для отладки согласно статье, но учтите, что она о 5.X.

Тут вроде все верно

Попробовал поставить другую версию Visual Studio, не помогло.

Дмитрий, у 7.0 другое ядро, и возможность отладки конфигурации on-site доступна только при наличии исходников. Пожалуйста, опишите задачу, которую Вам необходимо реализовать, и направьте запрос в техническую поддержку по адресу support@terrasoft.ru - Вам предоставят оптимальное решение.

О, а это что за ошибка?
http://joxi.ru/bhoAVP3JTJAANWyJB4U
Я точно знаю что этот код выполняется, почему отладчик к нему не цепляется?

Очевидно, ошибка в строке №11554.

Илья, уточните, пожалуйста, какая у вас версия BPMonline? Очень похоже, что вы пытаетесь отлаживать 7.Х, а у нее другое ядро и отладка без исходных кодов невозможна.

"Alimova Anna" написал:

bpm 5.x onsite , причем днем ранее у меня получилось отладить по этой же инструкции другой скрипт.

В таком случае попробуйте закрыть отладчик, удалить xml-ки схем, скомпилировать любую схему заново и уже новые схемы открывать отладчиком.

"Alimova Anna" написал:7.Х, а у нее другое ядро и отладка без исходных кодов невозможна

Анна, здравствуйте!

Уточните, пожалуйста, как правильно отлаживать on-site 7.Х? И как получить исходные коды?

Для отладки конфигурационного c# кода в 7.х нужно:
1) В файле connectionstrings.json указать, куда будет выгружены исходные коды при компиляции, это параметр
2) В файле Terrasoft.WebApp\Web.config флаг установить в true
3) Перезапустить пул и сайт приложения
4) В конфигурации для нужной схемы вызвать действие «Сгенерировать исходный код»
5) Скомпилировать конфигурацию. Если все правильно настроено, на этом этапе в папке, указанной в первом пункте появятся исходные коды и символы для отладки:

Валерий, спасибо, за разъяснения! Можно уточнить:

"Адасюк Валерий Викторович" написал:1) В файле connectionstrings.json указать, куда будет выгружены исходные коды при компиляции, это параметр

Какой параметр? (defWorkingCopyPath, defPackagesWorkingCopyPath или какой-то другой?)

"Адасюк Валерий Викторович" написал:2) В файле Terrasoft.WebApp\Web.config флаг установить в true

Какой флаг?

Здравствуйте!

Оба параметра находятся в файле 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 , написанную в скрипте, реакции нет.

Как сделать так, что бы все же переходить в отладчик ?

Нравится

2 комментария

Вам сюда
Внимательно читаем

"Яворский Алексей" написал:Хочу заметить, что в случае если пользователь не администратор на компьютере, то он обязательно должен входить в группу "Debugger Users"

А так же в реестре проверяем

"Пунько Наталия" написал:

Активируйте отладчик скриптов, установив ключ реестра JITDebug

Windows Registry Editor Version 5.00



[HKEY_CURRENT_USER\Software\Microsoft\Windows Script\Settings]

"JITDebug"=dword:00000001

Прикрепленный файлРазмер

enabledebugger.rar
259 байтов

С уважением,

Пунько Наталия

Менеджер по качеству

Группа компаний Terrasoft

Файлик ох как помог! Спасибо!

Показать все комментарии