Инструменты отладки серверного кода
Glossary Item Box
Общие положения
В процессе разработки на платформе Creatio может возникнуть необходимость выполнить отладку кода серверных схем исходного кода. Это могут быть, например, существующие базовые схемы, пользовательские конфигурационные классы, веб-сервисы или скрипты бизнес-процессов, написанные на языке C#. Выполнять отладку такого кода удобно с помощью интегрированных функций отладки среды разработки, например, Visual Studio. Отладчик Visual Studio позволяет приостанавливать выполнение методов, проверять значения переменных, изменять их и получать полное представление о том, что делает код.
Чтобы приступить к отладке приложения, необходимо выполнить ряд шагов:
- Выгрузить исходные коды конфигурации Creatio в файлы локального каталога.
- Создать новый проект в Visual Studio, в котором будет выполняться отладка.
- Добавить в проект Visual Studio выгруженные файлы с исходным кодом.
- Из проекта прикрепиться к рабочему процессу сервера IIS и начать процесс отладки.
Выполнять отладку описанным в статье способом можно только для приложений, развернутых on-site.
Отладку серверного кода описанным в данной статье методом можно только при выключенном режиме разработки в файловой системе (см. статью "Инструменты разработки. IDE Microsoft Visual Studio").
Чтобы во время отладки была возможность узнать значения переменных, необходимо включить признак [Suppress JIT Optimization] (меню [Options], вкладки [Debugging] > [General]). Подробнее об оптимизированном и неоптимизированном коде во время отладки можно узнать из статьи "JIT Optimization and Debugging" документации Visual Studio.
1. Выгрузка исходных кодов конфигурации
Для этого необходимо выполнить настройку приложения.
В файле Web.config, расположенном в корневом каталоге приложения ("внешний" Web.config), для атрибута debug элемента compilation необходимо установить значение "true":
<compilation debug="true" targetFramework="4.5" />
После внесения изменений файл необходимо сохранить.
В файле Web.config, расположенном в каталоге Terrasoft.WebApp приложения ("внутренний" Web.config), необходимо указать значения для следующих элементов:
- Для настройки IncludeDebugInformation необходимо указать значение "true".
- Для настройки CompilerSourcesTempFolderPath в качестве значения нужно указать путь к каталогу, в который будут выгружаться файлы с исходными кодами.
- Для настройки ExtractAllCompilerSources указать значение "true", если необходимо выгружать все схемы при выполнении действия [Компилировать измененное] ([Compile modified items]) раздела [Конфигурация]. Чтобы выгружать только измененные схемы, необходимо установить значение "false" (значение по умолчанию).
<add key="IncludeDebugInformation" value="true" /> <add key="CompilerSourcesTempFolderPath" value="Путь_к_локальному_каталогу" /> <add key="ExtractAllCompilerSources" value="false" />
После внесения изменений файл необходимо сохранить.
Чтобы выгрузить файлы с исходными кодами серверных схем, необходимо в разделе [Конфигурация] приложения выполнить действие [Компилировать все] ([Compile all items]) (рис. 1).
Рис. 1. — Выполнение действия [Компилировать все]
Во время компиляции в папку, указанную в настройке CompilerSourcesTempFolderPath "внутреннего" Web.config, будут выгружены файлы с исходными кодами конфигурационных схем приложения, а также конфигурационные библиотеки, их модули и файлы с отладочной информацией (*.pdb). Исходные коды схем будут выгружены заново при каждой последующей компиляции приложения.
При компиляции будут выгружаться файлы исходных кодов схем того рабочего пространства, под которым была запущена компиляция. Файлы выгруженных исходных кодов конфигурационных схем именуются в определенном формате: [Название схемы в конфигурации].[Название пакета]_[Тип схемы].cs.
Например: Contact.Base_Entity.cs, ContractReport.Base_Report.cs.
2. Создание проекта Visual Studio для отладки
Для отладки исходного кода создавать проект Visual Studio не обязательно. Достаточно открыть в Visual Studio нужные файлы. Однако, если отладка выполняется часто, или необходимо работать с большим количеством файлов одновременно, то создание проекта сделает работу более удобной.
Чтобы создать проект для отладки приложения в Visual Studio, необходимо выполнить команду меню File —> New —> Project (рис. 2).
Рис. 2. — Создание нового проекта в Visual Studio
В окне свойств создаваемого проекта необходимо выбрать тип проекта [Class Library (.NET Framework)] (библиотека классов для классического приложения Windows), указать название и расположение проекта (рис. 3).
Рис. 3. — Свойства проекта Visual Studio
После создания проекта необходимо удалить из него лишний файл (по умолчанию в новый проект добавлен файл Class1.cs) и сохранить проект.
3. Добавление в проект Visual Studio выгруженных файлов с исходным кодом
Для этого в контекстном меню проекта в проводнике решения необходимо выбрать команду Add —> Existing Item. В появившемся диалоговом окне необходимо перейти в каталог с выгруженными файлами с исходным кодом и выбрать все файлы (рис. 4).
Рис. 4. — Добавление файлов в проект
В проект Visual Studio можно добавлять только необходимые для отладки файлы. Но тогда переход между методами при отладке будет ограничен только методами классов, реализованных в добавленных в проект файлах.
После добавления файлов проект необходимо сохранить.
4. Прикрепление к рабочему процессу IIS для отладки
Чтобы начать отладку, необходимо прикрепиться к процессу сервера IIS, в котором запущено приложение. Для этого нужно в меню Visual Studio выбрать команду Debug > Attach to process (рис. 5).
Рис. 5. — Прикрепление к процессу
В открывшемся окне в списке процессов нужно выбрать рабочий процесс IIS, в котором запущен пул приложения Creatio (рис. 6).
Рис. 6. — Прикрепление к рабочему процессу IIS
Название рабочего процесса может различаться в зависимости от конфигурации используемого сервера IIS. Для полнофункционального IIS Web Server процесс называется w3wp.exe, для IIS Express — iisexpress.exe.
По умолчанию рабочий процесс IIS запущен под учетной записью, имя которой совпадает с именем пула приложения. Чтобы отобразить процессы всех пользователей, а не только текущего, необходимо установить признак [Show processes from all users] (рис. 6).
После прикрепления к процессу IIS можно приступать к отладке. Для этого нужно открыть файл с нужным исходным кодом и установить точку останова (рис. 7).
Рис. 7. — Точка останова в конструкторе объекта [Контрагент]
Как только будет задействован метод, на котором была установлена точка останова, программа будет остановлена и можно будет просмотреть текущее состояние переменных (рис. 8).
Рис. 8. — Прерывание выполнения программы на точке останова
Возможные проблемы при отладке
После прикрепления к процессу IIS возможна ситуация, когда символ точки останова отображается в виде белого круга, ограниченного красной окружностью. Такая точка останова является неактивной и прерывания выполнения приложения на ней не произойдет. При наведении курсора на символ неактивной точки останова появится подсказка, уведомляющая о проблеме (рис. 9).
Рис. 9. — Неактивная точка останова. Не загружена символьная информация
Если подсказка содержит сообщение о том, что не была загружена символьная информация (рис. 8), то для решения проблемы необходимо:
- Завершить выполнение отладки (Debug —> Stop Debugging).
- Закрыть файл с исходным кодом, для которого выполняется отладка.
- В разделе [Конфигурация] приложения выполнить действие [Компилировать все] ([Compile all items]) (рис. 1).
- Во время выполнения компиляции и перевыгрузки файлов с исходными кодами прикрепиться к процессу IIS заново.
- После выполнения компиляции переоткрыть файл с исходным кодом, для которого выполняется отладка.
В некоторых случаях может помочь повторная компиляция без открепления и прикрепления к IIS.
После повторного открытия файла с исходным кодом может появиться сообщение о неединообразных символах конца строк (рис. 10).
Рис. 10. — Сообщение о неединообразных символах конца строк
Необходимо нажать кнопку [Нет] ([No])). Если согласиться с нормализацией символов (кнопка [Да] ([Yes])), то точка останова снова может стать неактивной. Причина проблемы отображается в подсказке — несоответствие версий файла (рис. 10). Также в подсказке отображены варианты решения проблемы.
Рис. 11. — Неактивная точка останова. Несоответствие версий файла