Отладчик встроенных скриптов
Отладчик скриптов
Обзор
Отладчик скриптов — рабочий инструмент для разработки и диагностики скриптов встроенного языка. Он позволяет запускать скрипты в режиме отладки, останавливать выполнение на нужных строках, анализировать переменные и подключаться к уже запущенным скриптам.
Основные возможности
- Запуск в режиме отладки — выполнение скрипта с остановкой на заданных строках
- Просмотр переменных — автоматическое отображение значений всех переменных при остановке
- Наблюдение за выражениями — вычисление произвольных выражений при каждой остановке
- Точки останова — остановка выполнения на выбранных строках кода
- AttachDebugger — подключение к уже выполняющемуся скрипту
- Работа с файлами — открытие, сохранение и отслеживание изменений файлов скриптов
- Сохранение в базу данных — запись отредактированных скриптов в БД
Интерфейс отладчика
Редактор кода
Основная область для написания и редактирования скрипта. Редактор поддерживает:
- Подсветку синтаксиса
- Нумерацию строк
- Визуальное отображение точек останова (красные кружки в левом поле)
- Подсветку текущей строки выполнения (желтый фон)
- Подсветку парных скобок при установке курсора
Лог
Отображает:
- Вывод команд скрипта и команды Print
- Сообщения отладчика (остановка на breakpoint, ошибки)
- Временные метки для каждого сообщения в формате `[hh:nn:ss]`
Список переменных
Показывает все переменные и объекты текущего контекста с их текущими значениями. Обновляется автоматически при каждой остановке на точке останова.
Список наблюдения
Позволяет отслеживать произвольные выражения во время выполнения. Значения выражений пересчитываются и отображаются при каждой остановке.
Кнопки управления
- Запустить — запуск скрипта в режиме отладки (F9)
- Остановить — аварийная остановка выполняющегося скрипта
- Продолжить — возобновление выполнения после остановки на точке останова
Работа с отладчиком
Запуск скрипта
- Введите или откройте скрипт в редакторе
- При необходимости установите точки останова
- Нажмите кнопку «Запустить» или клавишу F9
- Скрипт выполнится до первой точки останова или до ошибки
Установка точек останова
Способ 1. Щёлкните левой кнопкой мыши в левой части нужной строки (область номеров строк). На строке появится красный кружок — точка останова установлена. Повторный щелчок удалит её.
Способ 2. Установите курсор на строку и используйте пункт меню для добавления точки останова.
Важно. Точки останова всегда останавливают выполнение на указанной строке, дополнительные условия не поддерживаются.
Просмотр переменных
При остановке на точке останова все переменные автоматически отображаются в списке. Значения обновляются при каждой остановке.
Наблюдение за выражениями
- Выделите текст в редакторе (например, имя переменной или выражение)
- Выберите в контекстном меню «Добавить watch из выделения»
- Либо используйте меню «Отладка» ? «Добавить watch» и введите выражение вручную
Выражение будет добавлено в список и пересчитываться при каждой остановке.
Примеры выражений:
- `$a + $b` — сумма переменных
- `db.RecordCount` — количество записей в наборе данных
- `$i > 0` — логическое условие
Продолжение выполнения
После остановки на точке останова:
- Просмотрите значения переменных и выражений наблюдения
- При необходимости скорректируйте точки останова или выражения
- Нажмите кнопку «Продолжить» — выполнение продолжится до следующей точки останова или завершения скрипта
Остановка выполнения
Во время выполнения скрипта можно:
- Нажать кнопку «Остановить» для аварийной остановки
- Нажать и удерживать клавишу ESC для прерывания выполнения
Работа с файлами
Открытие файла с отслеживанием
Меню «Файл» ? «Открыть и отслеживать».
Открывает файл скрипта и включает автоматическое отслеживание изменений на диске. При изменении файла во внешнем редакторе текст автоматически обновляется в отладчике.
Сохранение в файл
Меню «Файл» ? «Сохранить в файл».
Сохраняет текущий текст скрипта в файл. Если файл был открыт ранее, по умолчанию предлагается исходный путь.
Сохранение скриптов в базу данных
Если настроено сохранение в базу данных, отладчик может записать изменённый скрипт обратно в БД.
- «Файл» ? «Сохранить» — сохранить скрипт в базу данных
- «Файл» ? «Сохранить и закрыть» — сохранить скрипт и закрыть окно отладчика
Подключение к выполняемому скрипту (AttachDebugger)
Механизм AttachDebugger позволяет подключить отладчик к скрипту, который уже выполняется в другом месте приложения. Это удобно для отладки:
- Скриптов из печатных форм
- Скриптов из системных событий
- Скриптов из дополнительных услуг
Как использовать
В отладчике:
- Откройте отладчик скриптов.
- Включите режим отслеживания: меню «Скрипт» ? «Ожидать команды AttachDebugger».
- В строке состояния появится сообщение «Ожидание команды AttachDebugger...».
В скрипте: Важно. Команда `AttachDebugger` должна быть первой командой в скрипте. Добавьте её в самое начало:
AttachDebugger;
set($a, 10);
set($b, 20);
set($sum, $a + $b);
showmessage($sum);
Что происходит:
- При выполнении команды `AttachDebugger` скрипт останавливается.
- Отладчик автоматически подключается к выполняющемуся скрипту.
- Текст скрипта загружается в редактор отладчика.
- Можно ставить точки останова, просматривать переменные и продолжать отладку.
Важно:
- Отладчик должен быть в режиме отслеживания до того, как скрипт дойдёт до команды `AttachDebugger`.
- Если режим отслеживания не включён, команда `AttachDebugger` игнорируется.
- В режиме отслеживания может работать только один отладчик.
- Команда `AttachDebugger` должна быть первой командой в скрипте.
Горячие клавиши
| Клавиша | Действие |
|---|---|
| F9 | Запустить скрипт в режиме отладки |
| ESC | Аварийная остановка скрипта (удерживать) |
| Ctrl+C | Копировать |
| Ctrl+X | Вырезать |
| Ctrl+V | Вставить |
| Ctrl+A | Выделить все |
| Ctrl+Z | Отменить |
| Enter | Редактировать выражение наблюдения |
| Delete | Удалить выражение наблюдения |
Настройки редактора
Перенос строк
Контекстное меню редактора ? «Перенос строк».
Включает или выключает автоматический перенос длинных строк. Настройка сохраняется и восстанавливается при следующем запуске отладчика.
Отображение специальных символов
Контекстное меню редактора ? «Показать специальные символы».
Показывает пробелы и табуляции в виде специальных символов. Удобно для поиска лишних пробелов и контроля форматирования кода.
Примеры использования
Пример 1: Отладка скрипта с точками останова
Задача. Проверить корректность простого цикла суммирования.
- Откройте отладчик.
- Введите скрипт:
set($i, 10);
set($sum, 0);
while($i > 0,
set($sum, $sum + $i);
set($i, $i - 1)
);
showmessage($sum);
- Установите точку останова на строке `set($sum, $sum + $i);`.
- Запустите скрипт (F9).
- При остановке просмотрите значения `$i` и `$sum` в списке переменных.
- Добавьте выражение наблюдения `$sum + $i`.
- Нажимайте «Продолжить», наблюдая, как меняются значения до завершения цикла.
Что даёт отладчик:
- Видно, как накапливается сумма на каждом шаге.
- Можно быстро обнаружить ошибки в логике цикла.
Пример 2: Отладка скрипта с условиями
Задача. Проверить, корректно ли выбирается максимум из двух значений.
- Откройте отладчик.
- Введите скрипт:
set($a, 10);
set($b, 20);
if($a > $b,
set($result, $a),
set($result, $b)
);
showmessage($result);
- Установите точку останова на строке `if($a > $b,`.
- Запустите скрипт (F9).
- При остановке просмотрите значения `$a` и `$b`.
- Добавьте выражение наблюдения `$a > $b`.
- Продолжите выполнение и посмотрите, какое значение попало в `$result`.
Что даёт отладчик:
- Понятно, при каких значениях срабатывает та или иная ветка условия.
- Удобно тестировать разные комбинации входных данных.
Пример 3: Отладка скрипта с работой с базой данных
Задача. Проверить правильность выборки и обработки данных из базы.
- Откройте отладчик.
- Введите скрипт:
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);
- Установите точку останова на строке `if(db.RecordCount > 0,`.
- Запустите скрипт (F9).
- При остановке просмотрите значение `db.RecordCount`.
- Добавьте выражение наблюдения `db.FieldByName('code')`.
- Продолжите выполнение и убедитесь, что в `$code` попало ожидаемое значение.
Что даёт отладчик:
- Видно, сколько записей вернул запрос.
- Можно проверить конкретные значения полей перед дальнейшей обработкой.
Пример 4: Отладка скрипта из печатной формы через AttachDebugger
Задача. Подключиться к скрипту печатной формы, который выполняется из основного приложения.
- Откройте отладчик скриптов.
- Включите режим отслеживания: «Скрипт» ? «Ожидать команды AttachDebugger».
- В скрипте печатной формы добавьте команду `AttachDebugger` в самое начало:
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
);
- Запустите печать документа.
- Когда выполнение дойдёт до `AttachDebugger`, отладчик автоматически подключится.
- Установите точку останова на строке `if($count > 100,`.
- Продолжите выполнение и проанализируйте значение `$count`.
Что даёт отладчик:
- Можно разбирать сценарии, которые запускаются не из отладчика, а из бизнес-форм.
- Скрипт становится доступен для анализа так же, как и обычный скрипт, запущенный из отладчика.
Пример 5: Отладка скрипта с циклом FOR
Задача. Проверить корректность вычислений в цикле FOR.
- Откройте отладчик.
- Введите скрипт:
set($sum, 0);
for($i, 1, 10, set($sum, $sum + $i));
showmessage($sum);
- Установите точку останова на строке `set($sum, $sum + $i);`.
- Запустите скрипт (F9) и просматривайте значения `$i` и `$sum` при остановках.
- Добавьте выражение наблюдения `$sum + $i` для контроля вычислений.
Что даёт отладчик:
- Пошагово видно, как формируется итоговая сумма.
- Удобно находить ошибки в граничных условиях цикла.
Пример 6: Использование выражений наблюдения
Задача. Одновременно контролировать несколько взаимосвязанных значений.
- Откройте отладчик.
- Введите скрипт:
set($a, 10);
set($b, 20);
set($c, 30);
set($result, $a + $b + $c);
showmessage($result);
- Установите точку останова на строке `set($result, $a + $b + $c);`.
- Запустите скрипт (F9).
- Добавьте выражения наблюдения:
- `$a + $b`
- `$b + $c`
- `$a + $b + $c`
- При остановке сравните значения выражений и итоговый результат.
Что даёт отладчик:
- Одновременно видно несколько ключевых показателей.
- Легче находить расхождения между промежуточными и итоговыми значениями.
Заключение
Отладчик скриптов — компактный и практичный инструмент для работы со скриптами встроенного языка. Он позволяет быстро находить ошибки в логике, контролировать переменные и подключаться к выполняющимся скриптам без изменения бизнес-процессов в приложении.
