Back-end отладка

Сложный

Back-end отладка — отладка схем C#-кода, например, существующих базовых схем, пользовательских конфигурационных классов, веб-сервисов и т. д.

Выполнить back-end отладку 

Для выполнения отладки схем C#-кода используйте интегрированные функции отладки внешних IDE, например, Visual Studio Code.

Действия, которые позволяют выполнять отладчики внешних IDE:

  • Приостановить выполнение методов.
  • Проверить значения переменных.
  • Изменить значения переменных.

Рассмотрим выполнение back-end отладки на примере внешней IDE Visual Studio Code.

Условия для выполнения отладки с использованием Visual Studio Code:

  • Используется Creatio on-site.
  • Отключен режим разработки в файловой системе.
  • В Visual Studio Code включен признак Suppress JIT Optimization (меню Options —> пункт Debugging —> блок General). Это позволяет контролировать значения переменных в процессе отладки. Подробнее об оптимизированном и неоптимизированном коде при отладке можно узнать из официальной документации Visual Studio.

Чтобы выполнить back-end отладку:

  1. Выгрузите схемы C#-кода в файлы локального каталога.
  2. Создайте проект в Visual Studio Code для отладки.
  3. Добавьте выгруженные файлы в проект Visual Studio Code.
  4. Подключите проект к рабочему процессу сервера IIS и выполните отладку.

Решение проблем отладки 

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

Решение:

  1. Завершить выполнение отладки (меню Debug —> пункт Stop Debugging).
  2. Закрыть файл с исходным кодом, для которого выполняется отладка.
  3. В разделе Конфигурация (Configuration) приложения выполнить действие Компилировать все (Compile all).
  4. Во время выполнения компиляции и перевыгрузки файлов с исходными кодами заново подключить проект к процессу IIS.
  5. После выполнения компиляции переоткрыть файл с исходным кодом, для которого выполняется отладка.

Также можно выполнить повторную компиляцию без закрытия файла и повторного подключения проекта к процессу IIS.

Проблема 2. После повторного открытия файла с исходным кодом появилось сообщение о неединообразных символах в конце строк.

Решение:

  1. Нажать кнопку No для запрета нормализации символов. Если нажать кнопку Yes для нормализации символов, то точка останова снова может стать неактивной.
  2. Выполнить один из предложенных вариантов решения проблемы из подсказки, где также отображается причина проблемы (несоответствие версий файла).
Выполнить отладку серверного кода
Сложный

1. Выгрузить схемы C#-кода в файлы локального каталога 

  1. Измените конфигурационные файлы приложения для выполнения отладки.

    1. В конфигурационном файле Web.config, который находится в корневом каталоге приложения, для атрибута debug элемента <compilation> установите значение true.

      Web.config
      <compilation debug="true" targetFramework="4.5" />
      

      Сохраните файл.

    2. В конфигурационном файле Web.config, который находится в каталоге ...\Terrasoft.WebApp, укажите следующие значения:

      • IncludeDebugInformation — "true".
      • ExtractAllCompilerSources — "true" (если необходимо выгружать все схемы при выполнении действия Компилировать (Compile) раздела Конфигурация (Configuration)) или "false" (если необходимо выгружать только измененные схемы, значение по умолчанию).
      ...\Terrasoft.WebApp\Web.config
      <add key="IncludeDebugInformation" value="true" />
      <add key="ExtractAllCompilerSources" value="false" />
      

      Сохраните файл.

  2. В разделе Конфигурация (Configuration) выполните действие Компилировать все (Compile all ).

    scr_compile_all.png

В результате компиляции в каталог ../Terrasoft.WebApp/Terrasoft.Configuration/Autogenerated/Src будут выгружены файлы с исходными кодами конфигурационных схем приложения, а также конфигурационные библиотеки, их модули и файлы с отладочной информацией (файлы с расширением *.pdb). Исходные коды схем заново выгружаются при каждой компиляции приложения.

Формат имен файлов выгруженных схем: SchemaNameInConfiguration.PackageName_SchemaType.cs (например, Contact.Base_Entity.cs, ContractReport.Base_Report.cs).

2. Создать проект в Visual Studio Code для отладки 

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

Чтобы создать проект в Visual Studio Code для отладки:

  1. На панели инструментов Visual Studio нажмите File —> New —> Project.

    scr_new_project.png
  2. Заполните свойства проекта:

    • Тип проекта — выберите "Class Library (.NET Framework)".
    • Укажите название проекта.
    • Укажите расположение проекта.
    scr_new_project_props.png
  3. После создания проекта удалите из него файл Class1.cs и сохраните проект.

3. Добавить выгруженные файлы в проект Visual Studio Code 

  1. В контекстном меню проекта в проводнике решения нажмите Add —> Existing Item.
  2. В каталоге с выгруженными файлами выберите все файлы.

    scr_select_files.png

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

  3. Сохраните проект.

4. Подключить проект к рабочему процессу сервера IIS и выполните отладку 

  1. В меню Visual Studio нажмите Debug —> Attach to process.

    scr_attach_mnu.png
  2. В списке процессов выберите рабочий процесс IIS, в котором запущен пул приложения Creatio.

    scr_attach_iis.png

    Важно. Название рабочего процесса зависит от конфигурации используемого сервера IIS и может отличаться. Для полнофункционального IIS Web Server процесс называется w3wp.exe, для IIS Express — iisexpress.exe.

    По умолчанию рабочий процесс IIS запущен под учетной записью, имя которой совпадает с именем пула приложения. Чтобы отобразить процессы всех пользователей, а не только текущего, установите признак Show processes from all users.

  3. Откройте файл с исходным кодом и установите точку останова.

    scr_debug_ctor.png

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

    scr_breakpoint.png