Изменения

Перейти к: навигация, поиск

Отладчик встроенных скриптов

2025 байт добавлено, 08:53, 8 декабря 2025
Подключение отладчика к работающим скриптам
= Отладчик скриптов = == Обзор =Интерфейс =
[[Файл:ScriptDebugger.png]]
'''Отладчик скриптов''' — рабочий инструмент для разработки и диагностики [[Руководство_программиста|скриптов встроенного языка]].
Он позволяет запускать скрипты в режиме отладки, останавливать выполнение на нужных строках, анализировать переменные и подключаться к уже запущенным скриптам.
Вы можете запустить отладчик при наличии прав Администратораиз:* Через меню '''Отчеты > SQL > Выполнить > Запустить отладчик''' . * Через меню '''Отчеты > Дополнительные возможности > Редактировать'''.* Горячей клавишей '''Ctrl+Alt+D''' в главном окне приложения.
== Основные возможности ==
* '''Запуск в режиме отладки''' — выполнение скрипта с остановкой на заданных строках
* '''Наблюдение за выражениями''' — вычисление произвольных выражений при каждой остановке
* '''Точки останова''' — остановка выполнения на выбранных строках кода
* '''AttachDebuggerПодключение к скриптам''' — подключение к уже выполняющемуся скриптузапущенному без отладчика
* '''Работа с файлами''' — открытие, сохранение и отслеживание изменений файлов скриптов
* '''Сохранение в базу данныхРасширенный редактор''' — запись отредактированных скриптов в БД- подсветка парных скобок, отображение скрытых симолов, закладки.
== Интерфейс отладчика ==
=== Редактор кода ===
Основная область для написания и редактирования скрипта. Редактор поддерживает:
* Визуальное отображение точек останова (красные кружки в левом поле)
* Подсветку текущей строки выполнения (желтый фон)
* Подсветку парных скобок при установке курсора* Отображение скрытых символов* Закладки для быстрой навигации === Лог ===
Отображает:
* Вывод команд сообщений напрямую из скрипта и команды Printкомандой '''print'''
* Сообщения отладчика (остановка на breakpoint, ошибки)
* Временные метки для каждого сообщения в формате `[hh:nn:ss]`
 
=== Список переменных ===
Показывает все переменные и объекты текущего контекста с их текущими значениями. Обновляется автоматически при каждой остановке на точке останова.== Кнопки управления ==
=== Список наблюдения ===* '''Запустить''' — Запуск скрипта в режиме отладки (F9). При необходимости установите точки останова, cкрипт выполнится до первой точки останова или до ошибки.* '''Остановить''' — Прерывание дальнейшего исполнения скрипта. Во время выполнения скрипта можно нажать и удерживать клавишу '''ESC''' для аварийной остановки.* '''Продолжить''' — Возобновление выполнения после остановки скрипта (F9)
Позволяет отслеживать произвольные выражения во время выполнения. Значения выражений пересчитываются и отображаются при каждой остановке.= Работа с отладчиком =
=== Кнопки управления Установка точек останова === * '''Запустить''' — запуск скрипта в режиме отладки (F9)* '''Остановить''' — аварийная остановка выполняющегося скрипта* '''Продолжить''' — возобновление выполнения после остановки на точке Точки останова == Работа с отладчиком == === Запуск можно настроить перед запуском скрипта === # Введите или откройте скрипт в редакторе# При необходимости установите когда выполнение скрипта приостановлено. Добавление точки останова# Нажмите кнопку «Запустить» или клавишу F9# Скрипт выполнится до первой точки останова или до ошибки === Установка точек останова ===:
'''Способ 1.''' Щёлкните левой кнопкой мыши в левой части нужной строки (область номеров строк). На строке появится красный кружок — точка останова установлена. Повторный щелчок удалит её.
'''Способ 2.''' Установите курсор на строку и используйте пункт меню для добавления точки останова. '''Важно.Скрипт''' > ''' Точки Добавить точку останова всегда останавливают выполнение на указанной строке, дополнительные условия не поддерживаются(F5)'''=== Просмотр переменных ===
При остановке на точке останова все переменные автоматически отображаются в списке. Значения обновляются при каждой остановке.== Просмотр переменных ==
=== Наблюдение за выражениями ===Список '''Переменные''' содержит все переменные и объекты доступные в текущем инстансе интерпретатора. Список автоматически отображаются в момент остановки выполнения скрипта.
== Наблюдение за выражениями ==
Список '''Наблюдения''' показывает все добавленные пользователям выражения и их рассчитанные значения. Значения обновляются автоматически в момент остановки выполнения скрипта или после редактирования выражения. Для добавления наблюдения:
# Выделите текст в редакторе (например, имя переменной или выражение)
# Выберите в контекстном меню «Добавить watch из выделения»редактора пункт '''Добавить в наблюдение'''# Либо используйте меню «Отладка» ? «Добавить watch» '''Скрипт''' > '''Добавить наблюдение (Сtrl+F5)''' и введите выражение вручную Выражение будет добавлено в список и пересчитываться при каждой остановке.
'''Примеры выражений:'''
* `$a + $b` — сумма переменных* `db.RecordCount` — количество записей в наборе данных* `$i > 0` — логическое условие
=== Продолжение выполнения ==Работа с файлами =
После остановки на точке останова:# Просмотрите значения переменных и выражений наблюдения# При необходимости скорректируйте точки останова или выражения# Нажмите кнопку «Продолжить» — выполнение продолжится до следующей точки останова или завершения скрипта== Открытие файла с отслеживанием ==
=== Остановка выполнения === Во время выполнения скрипта можно:* Нажать кнопку «Остановить» для аварийной остановки* Нажать и удерживать клавишу ESC для прерывания выполнения == Работа с файлами == === Открытие файла с отслеживанием === Меню «Файл» ? «Открыть '''Файл''' > '''Открыть и отслеживать»отслеживать'''.
Открывает файл скрипта и включает автоматическое отслеживание изменений на диске.
При изменении файла во внешнем редакторе текст автоматически обновляется в отладчике.
=== Сохранение в файл === Меню «Файл» ? «Сохранить в файл». Сохраняет текущий текст скрипта в файл. Если файл был открыт ранее, по умолчанию предлагается исходный путь.
== Сохранение скриптов Всегда есть возможность сохранить скрипт в базу данных ==файл.* Меню '''Файл''' > '''Сохранить в файл''' — Сохраняет текущий текст скрипта в файл. Если файл был сохранен ранее, по умолчанию предлагается предыдуший путь.
* Меню '''Файл''' > '''Сохранить (Ctrl+S)''' — Когда отладчик открыт без привязки к конкретному скрипту, то сохраняет изменения в файл. '''Важно!''' Если настроено сохранение отладчик открыли например из '''Отчеты''' > '''Дополнительные возможности''' > '''Редактировать''' то сохранения через пункт '''Сохранить (Ctrl+S)''' сохранения '''всегда''' будет происходить в базу данных, отладчик может записать изменённый скрипт обратно в БДфайл изменения сохранены не будут.
* '''«Файл» ? «Сохранить»''' — сохранить скрипт в базу данных* '''«Файл» ? «Сохранить и закрыть»''' — сохранить скрипт и закрыть окно отладчика= Сохранение =
== Подключение к выполняемому скрипту Если отладчик открыт как редактор скрипта, доступны функции по сохранению напрямую в базу данных:* Меню '''Файл''' > '''Сохранить (AttachDebuggerCtrl+S) ==''' — сохранить скрипт в базу данных* Кнопка '''Сохранить и закрыть''' — сохранить скрипт и закрыть окно отладчика
Механизм AttachDebugger = Подключение отладчика к работающим скриптам =Данная возможность позволяет подключить отладчик к скриптускриптам изначально запущеным без него. Для начала работ, который уже выполняется отладчик нужно перевести в другом месте приложениярежим '''ожидания запросов отладки'''. Далее необходимо запустить скрипт стандартным способом. Если в скрипте будет команда AttachDebugger - отладчик это увидит и начнется процесс отладки этого скрипта. Это удобно для отладкискриптов, которые работают в своем контексте:* [[Печатные формы|Скриптов из печатных форм]]* [[Дополнительные_возможности|Скриптов из системных событий]] * [[Пользовательские_отчеты|Скриптов дополнительных возможностей]]* [[Дополнительные услуги|Скриптов из дополнительных услуг]]
=== Как использовать === '''В отладчике:Как использовать'''# Откройте отладчик скриптов.# Включите режим отслеживания: меню «Скрипт» ? «Ожидать команды AttachDebugger».# В строке состояния появится сообщение «Ожидание команды AttachDebugger...».
#'''В скриптеотладчике:'''## Откройте отладчик скриптов, главное меню '''Отчеты''' > '''SQL''' > '''Выполнить''' > '''Запустить отладчик (F9)'''.## Включите режим отслеживания:меню '''Файл''' > '''Ожидать команды AttachDebugger'''.## В строке состояния отладчика появится сообщение '''Ожидание команды AttachDebugger...'''.## Свернуть отладчик, если его закрыть то наблюдение остановится.#'''В скрипте:'Важно''## Скрипт нужно подготовить.В скрипте нужно прописать команду ''' Команда `AttachDebugger` ''' она должна быть '''первой командой''' или идти следующей строкой после тега начала скрипта '''<?>'''## Запустить скрипт стандартным образом: Сформировать печатную форму, рассчитать стоимость доставки, выполнить действие для вызова события.#'''Что происходит:'''## При выполнении команды AttachDebugger - скрипт останавливается.## Отладчик автоматически подключается к перехваченному скрипту.## Текст скрипта загружается в скриптередактор отладчика.## Можно ставить точки останова, просматривать переменные и продолжать отладку. Добавьте её в самое начало:
Пример скрипта с запросом подключения к отладчику:
<source lang="json">
<?>
AttachDebugger;
set($a, 10);
showmessage($sum);
</source>
 
'''Что происходит:'''
# При выполнении команды `AttachDebugger` скрипт останавливается.
# Отладчик автоматически подключается к выполняющемуся скрипту.
# Текст скрипта загружается в редактор отладчика.
# Можно ставить точки останова, просматривать переменные и продолжать отладку.
'''Важно:'''
* Отладчик должен быть в режиме отслеживания до того, как скрипт дойдёт до команды AttachDebugger.* Команда `AttachDebugger`должна быть первой командой в скрипте.* Если режим отслеживания не включён, команда `AttachDebugger` в скрипте игнорируетсяи ничего не делает.
* В режиме отслеживания может работать только один отладчик.
* Команда `AttachDebugger` должна быть первой командой Если скрипт исполняется в скриптешедулере или в другом вспомогательном потоке, то подключится к нему не получится. Отладка работает только в текущем потоке приложения.
== Горячие клавиши ==
{| class="wikitable"
! Клавиша !! Действие
|-
| '''F9''' || Запустить скрипт в режиме отладкиили продолжить исполнение
|-
| '''ESC''' || Аварийная остановка скрипта (удерживать)
|-
| '''Ctrl+CF5''' || КопироватьДобавить или удалить точку останова
|-
| '''Ctrl+XF5''' || ВырезатьДобавить наблюдение
|-
| '''Ctrl+VS''' || ВставитьСохранение изменений в базу данных, если скрипт был открыт для редактирования в отладчике
|-
| '''Ctrl+A1..9''' || Выделить всеПерейти в закладку 1 .. 9 в редакторе кода
|-
| '''Ctrl+ZShift+1..9''' || ОтменитьДобавить закладку 1 .. 9 в редакторе кода
|-
| '''EnterCtrl+Shift+U''' || Редактировать выражение наблюденияДвигать выбранный блок влево
|-
| '''DeleteCtrl+Shift+I''' || Удалить выражение наблюденияДвигать выбранный блок вправо
|}
== Настройки редактора ==
=== Перенос строк ===
Контекстное меню редактора ? «Перенос строк»> '''Перенос строк'''.
Включает или выключает автоматический перенос длинных строк.
Настройка сохраняется и восстанавливается при следующем запуске отладчика.
=== Отображение специальных символов ===
Контекстное меню редактора ? «Показать > '''Показать специальные символы»символы'''.
Показывает пробелы и табуляции в виде специальных символов.
Удобно для поиска лишних пробелов и контроля форматирования кода.
== Примеры использования == === Пример 1: Отладка скрипта с точками останова ===
'''Задача.''' Проверить корректность простого цикла суммирования.== Пример 1: Отладка скрипта с точками останова ==
# Откройте отладчик'''Задача.# Введите скрипт''' Проверить корректность простого цикла суммирования. Пример скрипта:
<source lang="json">
<?>
set($i, 10);
set($sum, 0);
showmessage($sum);
</source>
 План действий:# Откройте отладчик, главное меню '''Отчеты''' > '''SQL''' > '''Выполнить''' > '''Запустить отладчик (F9)'''.# Введите скрипт# Установите точку останова на строке `set($sum, $sum + $i);`.# '''Запустите скрипт (F9)'''.# При остановке просмотрите значения `$i` и `$sum` в списке переменных.# Добавьте выражение наблюдения `$sum + $i`.# Нажимайте «Продолжить»'''Продолжить''', наблюдая, как меняются значения до завершения цикла.
'''Что даёт отладчик:'''
* Можно быстро обнаружить ошибки в логике цикла.
=== Пример 2: Отладка скрипта с условиями ===
'''Задача.''' Проверить, корректно ли выбирается максимум из двух значений. # Откройте отладчик.# Введите скриптПример скрипта:
<source lang="json">
<?>
set($a, 10);
set($b, 20);
showmessage($result);
</source>
 План действий:# Откройте отладчик.# Введите скрипт.# Установите точку останова на строке `if($a > $b,`.
# Запустите скрипт (F9).
# При остановке просмотрите значения `$a` и `$b`.# Добавьте выражение наблюдения `$a > $b`.# Продолжите выполнение и посмотрите, какое значение попало в `$result`.
'''Что даёт отладчик:'''
* Удобно тестировать разные комбинации входных данных.
=== Пример 3: Отладка скрипта с работой с базой данных === '''Задача.''' Проверить правильность выборки и обработки данных из базы.
# Откройте отладчик'''Задача.# Введите скрипт''' Проверить правильность выборки и обработки данных из базы. Пример скрипта:
<source lang="json">
<?>
new('TSelfADO', 'db');
db.Open('SELECT code FROM city WHERE name=' + QuotedStr('Like "%Москва%"'));
if(db.RecordCount > 0,
set($code, int(db.FieldByName('code'))),
showmessage($code);
</source>
 План действий:# Откройте отладчик.# Введите скрипт.# Установите точку останова на строке `if(db.RecordCount > 0,`.
# Запустите скрипт (F9).
# При остановке просмотрите значение `db.RecordCount`.# Добавьте выражение наблюдения `db.FieldByName('code')`.# Продолжите выполнение и убедитесь, что в `$code` попало ожидаемое значение.
'''Что даёт отладчик:'''
* Можно проверить конкретные значения полей перед дальнейшей обработкой.
=== Пример 4: Отладка скрипта из печатной формы через AttachDebugger === '''Задача.''' Подключиться к скрипту печатной формы, который выполняется из основного приложения.
# Откройте отладчик скриптов'''Задача.# Включите режим отслеживания: «Скрипт» ? «Ожидать команды AttachDebugger»''' Подключиться к скрипту запущенному без отладчика.# В скрипте печатной формы добавьте команду `AttachDebugger` в самое началоПример скрипта:
<source lang="json">
<?>
AttachDebugger;
new('TSelfADO', 'db');
);
</source>
 План действий:# Откройте отладчик скриптов.# Включите режим отслеживания меню '''Файл''' > '''Ожидать команды AttachDebugger'''.# Откройте '''Отчеты''' > '''SQL''' введите скрипт из примера.# Запустите печать документаскрипт через меню '''Выполнить''' > '''Выполнить как скрипт (F7)'''.# Когда выполнение дойдёт до `AttachDebugger`, отладчик автоматически подключится.# Установите точку останова на строке `if($count > 100,`.# Продолжите выполнение и проанализируйте значение `$count`.
'''Что даёт отладчик:'''
* Можно разбирать сценарии, которые запускаются не из отладчика, а из бизнес-печтаных форм, дополнительных услуг и т.д.
* Скрипт становится доступен для анализа так же, как и обычный скрипт, запущенный из отладчика.
=== Пример 5: Отладка скрипта с циклом FOR ===
'''Задача.''' Проверить корректность вычислений в цикле FOR. # Откройте отладчик.# Введите скриптПример скрипта:
<source lang="json">
<?>
set($sum, 0);
for($i, 1, 10, set($sum, $sum + $i));
showmessage($sum);
</source>
 План действий:# Откройте отладчик.# Введите скрипт.# Установите точку останова на строке `set($sum, $sum + $i);`.# Запустите скрипт (F9) и просматривайте значения `$i` и `$sum` при остановках.# Добавьте выражение наблюдения `$sum + $i` для контроля вычислений.
'''Что даёт отладчик:'''
* Удобно находить ошибки в граничных условиях цикла.
=== Пример 6: Использование выражений наблюдения === '''Задача.''' Одновременно контролировать несколько взаимосвязанных значений.
# Откройте отладчик'''Задача.# Введите скрипт''' Одновременно контролировать несколько взаимосвязанных значений. Пример скрипта:
<source lang="json">
<?>
set($a, 10);
set($b, 20);
showmessage($result);
</source>
 План действий:# Откройте отладчик.# Введите скрипт.# Установите точку останова на строке `set($result, $a + $b + $c);`.
# Запустите скрипт (F9).
# Добавьте выражения наблюдения:
#* `$a + $b`#* `$b + $c`#* `$a + $b + $c`
# При остановке сравните значения выражений и итоговый результат.
* Одновременно видно несколько ключевых показателей.
* Легче находить расхождения между промежуточными и итоговыми значениями.
 
== Заключение ==
 
Отладчик скриптов — компактный и практичный инструмент для работы со скриптами встроенного языка.
Он позволяет быстро находить ошибки в логике, контролировать переменные и подключаться к выполняющимся скриптам без изменения бизнес-процессов в приложении.
538
правок

Навигация