Изменения

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

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

19 309 байт добавлено, во вторник в 13:44
Новая страница: «= Отладчик скриптов = == Обзор == Отладчик скриптов — рабочий инструмент для разработки и…»
= Отладчик скриптов =

== Обзор ==

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

== Основные возможности ==

* '''Запуск в режиме отладки''' — выполнение скрипта с остановкой на заданных строках
* '''Просмотр переменных''' — автоматическое отображение значений всех переменных при остановке
* '''Наблюдение за выражениями''' — вычисление произвольных выражений при каждой остановке
* '''Точки останова''' — остановка выполнения на выбранных строках кода
* '''AttachDebugger''' — подключение к уже выполняющемуся скрипту
* '''Работа с файлами''' — открытие, сохранение и отслеживание изменений файлов скриптов
* '''Сохранение в базу данных''' — запись отредактированных скриптов в БД

== Интерфейс отладчика ==

=== Редактор кода ===

Основная область для написания и редактирования скрипта. Редактор поддерживает:
* Подсветку синтаксиса
* Нумерацию строк
* Визуальное отображение точек останова (красные кружки в левом поле)
* Подсветку текущей строки выполнения (желтый фон)
* Подсветку парных скобок при установке курсора

=== Лог ===

Отображает:
* Вывод команд скрипта и команды Print
* Сообщения отладчика (остановка на breakpoint, ошибки)
* Временные метки для каждого сообщения в формате `[hh:nn:ss]`

=== Список переменных ===

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

=== Список наблюдения ===

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

=== Кнопки управления ===

* '''Запустить''' — запуск скрипта в режиме отладки (F9)
* '''Остановить''' — аварийная остановка выполняющегося скрипта
* '''Продолжить''' — возобновление выполнения после остановки на точке останова

== Работа с отладчиком ==

=== Запуск скрипта ===

# Введите или откройте скрипт в редакторе
# При необходимости установите точки останова
# Нажмите кнопку «Запустить» или клавишу F9
# Скрипт выполнится до первой точки останова или до ошибки

=== Установка точек останова ===

'''Способ 1.''' Щёлкните левой кнопкой мыши в левой части нужной строки (область номеров строк). На строке появится красный кружок — точка останова установлена. Повторный щелчок удалит её.

'''Способ 2.''' Установите курсор на строку и используйте пункт меню для добавления точки останова.

'''Важно.''' Точки останова всегда останавливают выполнение на указанной строке, дополнительные условия не поддерживаются.

=== Просмотр переменных ===

При остановке на точке останова все переменные автоматически отображаются в списке.
Значения обновляются при каждой остановке.

=== Наблюдение за выражениями ===

# Выделите текст в редакторе (например, имя переменной или выражение)
# Выберите в контекстном меню «Добавить watch из выделения»
# Либо используйте меню «Отладка» ? «Добавить watch» и введите выражение вручную

Выражение будет добавлено в список и пересчитываться при каждой остановке.

'''Примеры выражений:'''
* `$a + $b` — сумма переменных
* `db.RecordCount` — количество записей в наборе данных
* `$i > 0` — логическое условие

=== Продолжение выполнения ===

После остановки на точке останова:
# Просмотрите значения переменных и выражений наблюдения
# При необходимости скорректируйте точки останова или выражения
# Нажмите кнопку «Продолжить» — выполнение продолжится до следующей точки останова или завершения скрипта

=== Остановка выполнения ===

Во время выполнения скрипта можно:
* Нажать кнопку «Остановить» для аварийной остановки
* Нажать и удерживать клавишу ESC для прерывания выполнения

== Работа с файлами ==

=== Открытие файла с отслеживанием ===

Меню «Файл» ? «Открыть и отслеживать».

Открывает файл скрипта и включает автоматическое отслеживание изменений на диске.
При изменении файла во внешнем редакторе текст автоматически обновляется в отладчике.

=== Сохранение в файл ===

Меню «Файл» ? «Сохранить в файл».

Сохраняет текущий текст скрипта в файл.
Если файл был открыт ранее, по умолчанию предлагается исходный путь.

== Сохранение скриптов в базу данных ==

Если настроено сохранение в базу данных, отладчик может записать изменённый скрипт обратно в БД.

* '''«Файл» ? «Сохранить»''' — сохранить скрипт в базу данных
* '''«Файл» ? «Сохранить и закрыть»''' — сохранить скрипт и закрыть окно отладчика

== Подключение к выполняемому скрипту (AttachDebugger) ==

Механизм AttachDebugger позволяет подключить отладчик к скрипту, который уже выполняется в другом месте приложения.
Это удобно для отладки:
* Скриптов из печатных форм
* Скриптов из системных событий
* Скриптов из дополнительных услуг

=== Как использовать ===

'''В отладчике:'''
# Откройте отладчик скриптов.
# Включите режим отслеживания: меню «Скрипт» ? «Ожидать команды AttachDebugger».
# В строке состояния появится сообщение «Ожидание команды AttachDebugger...».

'''В скрипте:'''
'''Важно.''' Команда `AttachDebugger` должна быть '''первой командой''' в скрипте. Добавьте её в самое начало:

<source lang="json">
AttachDebugger;
set($a, 10);
set($b, 20);
set($sum, $a + $b);
showmessage($sum);
</source>

'''Что происходит:'''
# При выполнении команды `AttachDebugger` скрипт останавливается.
# Отладчик автоматически подключается к выполняющемуся скрипту.
# Текст скрипта загружается в редактор отладчика.
# Можно ставить точки останова, просматривать переменные и продолжать отладку.

'''Важно:'''
* Отладчик должен быть в режиме отслеживания до того, как скрипт дойдёт до команды `AttachDebugger`.
* Если режим отслеживания не включён, команда `AttachDebugger` игнорируется.
* В режиме отслеживания может работать только один отладчик.
* Команда `AttachDebugger` должна быть первой командой в скрипте.

== Горячие клавиши ==

{| class="wikitable"
|-
! Клавиша !! Действие
|-
| '''F9''' || Запустить скрипт в режиме отладки
|-
| '''ESC''' || Аварийная остановка скрипта (удерживать)
|-
| '''Ctrl+C''' || Копировать
|-
| '''Ctrl+X''' || Вырезать
|-
| '''Ctrl+V''' || Вставить
|-
| '''Ctrl+A''' || Выделить все
|-
| '''Ctrl+Z''' || Отменить
|-
| '''Enter''' || Редактировать выражение наблюдения
|-
| '''Delete''' || Удалить выражение наблюдения
|}

== Настройки редактора ==

=== Перенос строк ===

Контекстное меню редактора ? «Перенос строк».

Включает или выключает автоматический перенос длинных строк.
Настройка сохраняется и восстанавливается при следующем запуске отладчика.

=== Отображение специальных символов ===

Контекстное меню редактора ? «Показать специальные символы».

Показывает пробелы и табуляции в виде специальных символов.
Удобно для поиска лишних пробелов и контроля форматирования кода.

== Примеры использования ==

=== Пример 1: Отладка скрипта с точками останова ===

'''Задача.''' Проверить корректность простого цикла суммирования.

# Откройте отладчик.
# Введите скрипт:
<source lang="json">
set($i, 10);
set($sum, 0);
while($i > 0,
set($sum, $sum + $i);
set($i, $i - 1)
);
showmessage($sum);
</source>
# Установите точку останова на строке `set($sum, $sum + $i);`.
# Запустите скрипт (F9).
# При остановке просмотрите значения `$i` и `$sum` в списке переменных.
# Добавьте выражение наблюдения `$sum + $i`.
# Нажимайте «Продолжить», наблюдая, как меняются значения до завершения цикла.

'''Что даёт отладчик:'''
* Видно, как накапливается сумма на каждом шаге.
* Можно быстро обнаружить ошибки в логике цикла.

=== Пример 2: Отладка скрипта с условиями ===

'''Задача.''' Проверить, корректно ли выбирается максимум из двух значений.

# Откройте отладчик.
# Введите скрипт:
<source lang="json">
set($a, 10);
set($b, 20);
if($a > $b,
set($result, $a),
set($result, $b)
);
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('Москва'));
if(db.RecordCount > 0,
set($code, int(db.FieldByName('code'))),
0
);
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');
db.Open('SELECT COUNT(*) as cnt FROM address WHERE date_put IS NULL');
set($count, int(db.FieldByName('cnt')));
if($count > 100,
showmessage('Внимание! Много недоставленных адресов!'),
0
);
</source>
# Запустите печать документа.
# Когда выполнение дойдёт до `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);
set($c, 30);
set($result, $a + $b + $c);
showmessage($result);
</source>
# Установите точку останова на строке `set($result, $a + $b + $c);`.
# Запустите скрипт (F9).
# Добавьте выражения наблюдения:
#* `$a + $b`
#* `$b + $c`
#* `$a + $b + $c`
# При остановке сравните значения выражений и итоговый результат.

'''Что даёт отладчик:'''
* Одновременно видно несколько ключевых показателей.
* Легче находить расхождения между промежуточными и итоговыми значениями.

== Заключение ==

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

Навигация