Делюсь своим подходом к удалённой отладке (Remote Debug).

 

1. Создайте новый проект.
2. Установите WorkspaceConsole на своем веб-сайте.
3. Скопируйте WorkspaceConsole в локальную папку.
4. Добавьте файл TestProcess.cs.
4.1. Установите точку останова в методе Execute.
5. Откройте свойства проекта
5.1. В разделе "Отладка" установите "Запуск внешней программы":
...\VS.Creatio.RemoteDebug\WorkspaceConsole\Terrasoft.Tools.WorkspaceConsole.exe
5.2. В разделе "Отладка" установите "Аргументы командной строки":
-filename="...\VS.Creatio.RemoteDebug\ScriptExecutor\bin\Debug\ScriptExecutor.dll" -typeName=Terrasoft.Configuration.VSMorozov.TestProcess -operation=ExecuteScript -workspaceName=Default -logPath=...\VS.Creatio.RemoteDebug\ScriptExecutor\Logs\ -confRuntimeParentDirectory=...\Terrasoft.WebApp\ -autoExit=false
6. Сделайте Rebuld.
7. Выберите режим Debug, а затем запустите Debug (F5).

using ScriptExecutor;
using System;
using System.Collections.Generic;
using Terrasoft.Core;
using Terrasoft.Core.Entities;
using Terrasoft.Core.Process;
 
namespace Terrasoft.Configuration.VSMorozov
{
    public class TestProcess : IExecutor
    {
        private UserConnection UserConnection { get; set; }
 
        public void Execute(UserConnection userConnection)
        {
            UserConnection = userConnection;
 
            // Make breakpoint here.
            GetEntities();
        }
 
        private void GetEntities()
        {
            EntitySchema entitySchema = UserConnection.EntitySchemaManager.GetInstanceByName("Contact");
            EntitySchemaQuery esq = new EntitySchemaQuery(entitySchema);
            esq.AddAllSchemaColumns();
            EntityCollection collection = esq.GetEntityCollection(UserConnection);
        }
    }
}

PS: Замените ваши пути к каталогам.

PPS: комментарии приветствуются.

Нравится

Поделиться

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

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

В системе включаю режим отладки. Всё работает. Переключаюсь на портал - не работает. Как отключить минификацию кода в 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)

 

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

Добрый день!

Настроил систему на разработку в файловой системе. Все делал по инструкции с академии. Но при отладки когда проставляю точку останова то она не работает - http://prntscr.com/mon7s3
Второй метод дебага что описан в статье мне не подходит.
Подскажите из- за чего может быть такое поведение?
Заранее благодарен

Нравится

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

Как вариант - посмотреть настройки отладчика в VS.

 

 

Как вариант - посмотреть настройки отладчика в VS.

 

 

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

Подскажите какие отладчики, кроме стандартного Microsoft Script Debugger и отладчика Visual Studio можно использовать?

Я скачал с сайта Microsoft Debugging Tools for Windows (x86), там идет WinDbg.exe дебагер, но как его активизировать для JScript? А может он просто его не поддерживает.

Может есть какие-то бесплатные альтернативы, ну хоть что-то лучше чем Microsoft Script Debugger?

ПС: быстро пробежался поиском по комюнити - не нашел темы по этому поводу. Если такая тема уже поднималась, то я удалю мой пост.

Нравится

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

Например, Microsoft Script Editor. У него, конечно, намного меньше возможностей, чем у Visual Studio, но как по мне, гораздо лучше Microsoft Script Debugger.

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Спасибо, я с ним сталкивался мимолетно, теперь я понял откуда он взялся - из MS Office 2003.

Вот жаль: из 2007 офиса его убрали и только этот офис стоит у заказчика. Может еще есть какие-то альтернативы?

На самом деле его не убрали, а просто не установили при установке офиса. При желании его можно доустановить:

Более подробную информацию по установке можно найти здесь.

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

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

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

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

Нашёл следующий подход: в jscript есть функция eval, позволяющая динамически выполнить блок кода.
Пишем кусок скрипта в текстовом файле (я пишу в своей любимой Visual Studio), в терасофте добавляем его
загрузку и выполнение в нужное место, и вуаля - поменяли скрипт, нажали кнопку в клиенте - отработала новая логика,
никаких перезапусков!

К примеру, я добавил такой блок в функцию, которая перестраивает карточку документа при смене значения
в комбобоксе "тип документа". Получается, чтоб увидеть как отработал мой скрипт, мне достаточно выбрать
новое значение в списке - сразу загружается новая версия и выполняется в контексте текущего состояния карточки.

Вариант кода:

//В администраторе
//Глобальная переменная - чтоб убедиться, что загруженный скрипт видит всё, что видно в функции, из которой вызван eval
var testMessage = 'Printed from loaded script';
function OnEvent()
{
  eval(GetExtScriptText('C:\\Prj\\Terrasoft\\ExtScripts\\DocScripts.js')); // Получили текст скрипта и выполнили его, теперь все функции оттуда нам доступны
  processTestMessage(); //Эта функция описана в скрипте DocScripts.js
}

//Файл DocScripts.js
function oneMoreFunction(messageText){
 return messageText + ' ok.';
}

//Эту функцию мы и вызываем из террасофт. Ей доступна, среди прочего, переменная testMessage
function processTestMessage() {
    var tempString = oneMoreFunction(testMessage);
   
    ShowInformationDialog(tempString);       
}
 

//Функция, которая читает тексовый файл
function GetExtScriptText(scriptFile)
{
 var StringsList = System.CreateObject('TSObjectLibrary.StringsList');
 var FileSystemObject = new ActiveXObject('Scripting.FileSystemObject');

    var File = FileSystemObject.GetFile(scriptFile);

 //Open for reading in default encoding
 var Stream = File.OpenAsTextStream(1, -2);
 try
 {
  while (!Stream.AtEndOfStream)
  {
   StringsList.Add(Stream.ReadLine());
  }
 }
 finally
 {
  Stream.Close();
 }

 return StringsList.Text;
}

Конечно, это не продакшен - вариант, хотя если читать из базы то можно пробовать...
Ещё таким образом можно подсмотреть из внешнего скрипта состояние переменных в карточке у заказчика -
сделать ему кнопку "вызвать скрипт", и по ситуации скрипт можно быстро сваять на месте.
Снова таки актуально только в процессе доводки системы, иначе это уже дырка.

Нравится

Поделиться

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

Сергей, а почему не использовать функцию Main в самом скрипте?
Пишите там код по созданию экземпляра карточки, заполняете нужные атрибуты, вызываете Show(), Prepare(), нажимаете F9 и получаете работающую карточку в администраторе.

Александр, я раньше так и делал...
У нас в этой карточке логика зависит от того, как её создавали (есть несколько вариантов действий, в результате которых вызывается эта карточка в разных режимах - обычный, массовое копирование, изменение, вызов из детали)

Соответственно, я создавал из main весь workspace. Это занимает больше 10 секунд, и при этом не всё работало (возможно, я не до конца корректно его создавал, хотя больше похоже на то, что для корректного создания нужен ещё сервис основного окна). А так - при запущеном клиенте проверить новую функциональность несколько секунд.

Я понял. Да иногда самое сложное - это как раз подготовить параметры для отладки окна. Тогда Ваш способ действительно облегчает отладку.

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

У меня не работает JIT-отладка. На компьютере установлен Microsoft Scrip Debugger и JIT debugger от Visual Studio 2008. В реестре опция JIT-отладки включена - [HKEY_CURRENT_USER\Software\Microsoft\Windows Script\Settings].
Когда добавляю в код слово debugger, то при выполнении его ничего не происходит. Раньше, окошко Microsoft Script Debugger появлялось, а сейчас вообще ничего не появляется.
Подскажите как сделать, чтобы JIT-отладка снова заработала?

Нравится

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

Здравствуйте!
Было и у меня такое когда-то. Только когда переустановил Visual Studio -- все вновь стало на свои места.

А как Вы JIT 2008 студии устанавливали?

VS 2008 я установил с параметрами по-умолчанию.
В Параметры->Отладка->JIT стоят галочки напротив всех пунктов:
- Машинный код
- Сценарий
- Управляемый код

Было такое. Что я только не делал. А когда переустановил Visual Studio -- зароботало.

Так я вот только ее и поставил, есть ли смысл переустанавливать заново?

В реестре параметр стоит?
[HKEY_CURRENT_USER\Software\Microsoft\Windows Script\Settings]
"JITDebug"=dword:00000001

да, я об этом написал еще вначале

"Александр Кравчук" написал:Было такое. Что я только не делал. А когда переустановил Visual Studio -- зароботало.

+1 аналогично на 2008!

--
www.it-sfera.com.ua
Terrasoft Solution Partner

У меня тоже похожее было (правда с 2005 студией). Переустановка помогла.
Вопрос в том, что только в одной сборке 2008 студии есть JIT debugging (в Express нет).

Все решилось, вроде переустановка помогла, а может и что-то другое. Я посносил некоторые программы

В общем, как активировать по-прежнему осталась тайной, переустановка - наше все))

ООО "Лайнсервис"
www.ls-crm.ru

Вроде как в прогр файлс/ТС/tools disable/enable debugger помогает

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