Отладчик встроенных скриптов — различия между версиями
Sammy (обсуждение | вклад) (→Отображение специальных символов) |
Sammy (обсуждение | вклад) |
||
| Строка 37: | Строка 37: | ||
* Вывод команд скрипта и команды Print | * Вывод команд скрипта и команды Print | ||
* Сообщения отладчика (остановка на breakpoint, ошибки) | * Сообщения отладчика (остановка на breakpoint, ошибки) | ||
| − | * Временные метки для каждого сообщения в формате | + | * Временные метки для каждого сообщения в формате [hh:nn:ss] |
=== Список переменных === | === Список переменных === | ||
| Строка 68: | Строка 68: | ||
'''Способ 1.''' Щёлкните левой кнопкой мыши в левой части нужной строки (область номеров строк). На строке появится красный кружок — точка останова установлена. Повторный щелчок удалит её. | '''Способ 1.''' Щёлкните левой кнопкой мыши в левой части нужной строки (область номеров строк). На строке появится красный кружок — точка останова установлена. Повторный щелчок удалит её. | ||
| − | '''Способ 2.''' Установите курсор на строку и используйте пункт меню | + | '''Способ 2.''' Установите курсор на строку и используйте пункт меню '''Скрипт''' > '''Добавить точку останова (F5)'''. |
'''Важно.''' Точки останова всегда останавливают выполнение на указанной строке, дополнительные условия не поддерживаются. | '''Важно.''' Точки останова всегда останавливают выполнение на указанной строке, дополнительные условия не поддерживаются. | ||
| Строка 80: | Строка 80: | ||
# Выделите текст в редакторе (например, имя переменной или выражение) | # Выделите текст в редакторе (например, имя переменной или выражение) | ||
| − | # Выберите в контекстном меню | + | # Выберите в контекстном меню > '''Добавить в наблюдение''' |
| − | # Либо используйте меню | + | # Либо используйте меню '''Скрипт''' > '''Добавить наблюдение (Сtrl+F5)''' и введите выражение вручную. |
Выражение будет добавлено в список и пересчитываться при каждой остановке. | Выражение будет добавлено в список и пересчитываться при каждой остановке. | ||
'''Примеры выражений:''' | '''Примеры выражений:''' | ||
| − | * | + | * $a + $b — сумма переменных |
| − | * | + | * db.RecordCount — количество записей в наборе данных |
| − | * | + | * $i > 0 — логическое условие |
=== Продолжение выполнения === | === Продолжение выполнения === | ||
| Строка 95: | Строка 95: | ||
# Просмотрите значения переменных и выражений наблюдения | # Просмотрите значения переменных и выражений наблюдения | ||
# При необходимости скорректируйте точки останова или выражения | # При необходимости скорректируйте точки останова или выражения | ||
| − | # Нажмите кнопку | + | # Нажмите кнопку '''Продолжить (F9)''' — выполнение продолжится до следующей точки останова или завершения скрипта |
=== Остановка выполнения === | === Остановка выполнения === | ||
Во время выполнения скрипта можно: | Во время выполнения скрипта можно: | ||
| − | * Нажать кнопку | + | * Нажать кнопку '''Остановить (ESC)''' для аварийной остановки |
* Нажать и удерживать клавишу ESC для прерывания выполнения | * Нажать и удерживать клавишу ESC для прерывания выполнения | ||
| Строка 114: | Строка 114: | ||
=== Сохранение в файл === | === Сохранение в файл === | ||
| − | Меню | + | Меню '''Файл''' > '''Сохранить в файл'''. |
Сохраняет текущий текст скрипта в файл. | Сохраняет текущий текст скрипта в файл. | ||
| Строка 123: | Строка 123: | ||
Если настроено сохранение в базу данных, отладчик может записать изменённый скрипт обратно в БД. | Если настроено сохранение в базу данных, отладчик может записать изменённый скрипт обратно в БД. | ||
| − | * ''' | + | * Меню '''Файл''' > '''Сохранить''' — сохранить скрипт в базу данных |
| − | * ''' | + | * Кнопка '''Сохранить и закрыть''' — сохранить скрипт и закрыть окно отладчика |
== Подключение к выполняемому скрипту (AttachDebugger) == | == Подключение к выполняемому скрипту (AttachDebugger) == | ||
| Строка 131: | Строка 131: | ||
Это удобно для отладки: | Это удобно для отладки: | ||
* Скриптов из печатных форм | * Скриптов из печатных форм | ||
| − | * Скриптов из системных событий | + | * Скриптов из системных событий (которые происходят в интерфейсе) |
* Скриптов из дополнительных услуг | * Скриптов из дополнительных услуг | ||
| + | |||
| + | '''Внимание'''. Если скрипт исполняется в шедулере или в другом вспомогательном потоке, то подключится к нему не получится. Отладка работает только в текущем потоке приложения. | ||
=== Как использовать === | === Как использовать === | ||
| Строка 138: | Строка 140: | ||
'''В отладчике:''' | '''В отладчике:''' | ||
# Откройте отладчик скриптов. | # Откройте отладчик скриптов. | ||
| − | # Включите режим отслеживания: меню | + | # Включите режим отслеживания: меню '''Скрипт''' > '''Ожидать команды AttachDebugger'''. |
| − | # В строке состояния появится сообщение | + | # В строке состояния появится сообщение '''Ожидание команды AttachDebugger...'''. |
'''В скрипте:''' | '''В скрипте:''' | ||
| Строка 170: | Строка 172: | ||
! Клавиша !! Действие | ! Клавиша !! Действие | ||
|- | |- | ||
| − | | '''F9''' || Запустить скрипт в режиме отладки | + | | '''F9''' || Запустить скрипт в режиме отладки или продолжить исполнение |
|- | |- | ||
| '''ESC''' || Аварийная остановка скрипта (удерживать) | | '''ESC''' || Аварийная остановка скрипта (удерживать) | ||
|- | |- | ||
| − | | ''' | + | | '''F5''' || Добавить или удалить точку останова |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
|- | |- | ||
| − | | ''' | + | | '''Ctrl+F5''' || Добавить наблюдение |
|- | |- | ||
| − | | ''' | + | | '''Ctrl+S''' || Сохранение изменений в базу данных, если скрипт был открыт для редактирования в отладчике |
|} | |} | ||
Версия 14:15, 2 декабря 2025
Содержание
- 1 Отладчик скриптов
- 1.1 Обзор
- 1.2 Основные возможности
- 1.3 Интерфейс отладчика
- 1.4 Работа с отладчиком
- 1.5 Работа с файлами
- 1.6 Сохранение скриптов в базу данных
- 1.7 Подключение к выполняемому скрипту (AttachDebugger)
- 1.8 Горячие клавиши
- 1.9 Настройки редактора
- 1.10 Примеры использования
- 1.10.1 Пример 1: Отладка скрипта с точками останова
- 1.10.2 Пример 2: Отладка скрипта с условиями
- 1.10.3 Пример 3: Отладка скрипта с работой с базой данных
- 1.10.4 Пример 4: Отладка скрипта из печатной формы через AttachDebugger
- 1.10.5 Пример 5: Отладка скрипта с циклом FOR
- 1.10.6 Пример 6: Использование выражений наблюдения
- 1.11 Заключение
Отладчик скриптов
Обзор
Отладчик скриптов — рабочий инструмент для разработки и диагностики скриптов встроенного языка. Он позволяет запускать скрипты в режиме отладки, останавливать выполнение на нужных строках, анализировать переменные и подключаться к уже запущенным скриптам. Вы можете запустить отладчик при наличии прав Администратора:
- Отчеты > SQL > Выполнить > Запустить отладчик
- Отчеты > Дополнительные возможности > Редактировать
Основные возможности
- Запуск в режиме отладки — выполнение скрипта с остановкой на заданных строках
- Просмотр переменных — автоматическое отображение значений всех переменных при остановке
- Наблюдение за выражениями — вычисление произвольных выражений при каждой остановке
- Точки останова — остановка выполнения на выбранных строках кода
- AttachDebugger — подключение к уже выполняющемуся скрипту
- Работа с файлами — открытие, сохранение и отслеживание изменений файлов скриптов
- Сохранение в базу данных — запись отредактированных скриптов в БД
Интерфейс отладчика
Редактор кода
Основная область для написания и редактирования скрипта. Редактор поддерживает:
- Подсветку синтаксиса
- Нумерацию строк
- Визуальное отображение точек останова (красные кружки в левом поле)
- Подсветку текущей строки выполнения (желтый фон)
- Подсветку парных скобок при установке курсора
Лог
Отображает:
- Вывод команд скрипта и команды Print
- Сообщения отладчика (остановка на breakpoint, ошибки)
- Временные метки для каждого сообщения в формате [hh:nn:ss]
Список переменных
Показывает все переменные и объекты текущего контекста с их текущими значениями. Обновляется автоматически при каждой остановке на точке останова.
Список наблюдения
Позволяет отслеживать произвольные выражения во время выполнения. Значения выражений пересчитываются и отображаются при каждой остановке.
Кнопки управления
- Запустить — запуск скрипта в режиме отладки (F9)
- Остановить — аварийная остановка выполняющегося скрипта
- Продолжить — возобновление выполнения после остановки на точке останова (F9)
Работа с отладчиком
Запуск скрипта
- Введите или откройте скрипт в редакторе
- При необходимости установите точки останова
- Нажмите кнопку «Запустить» или клавишу F9
- Скрипт выполнится до первой точки останова или до ошибки
Установка точек останова
Способ 1. Щёлкните левой кнопкой мыши в левой части нужной строки (область номеров строк). На строке появится красный кружок — точка останова установлена. Повторный щелчок удалит её.
Способ 2. Установите курсор на строку и используйте пункт меню Скрипт > Добавить точку останова (F5).
Важно. Точки останова всегда останавливают выполнение на указанной строке, дополнительные условия не поддерживаются.
Просмотр переменных
При остановке на точке останова все переменные автоматически отображаются в списке. Значения обновляются при каждой остановке.
Наблюдение за выражениями
- Выделите текст в редакторе (например, имя переменной или выражение)
- Выберите в контекстном меню > Добавить в наблюдение
- Либо используйте меню Скрипт > Добавить наблюдение (Сtrl+F5) и введите выражение вручную.
Выражение будет добавлено в список и пересчитываться при каждой остановке.
Примеры выражений:
- $a + $b — сумма переменных
- db.RecordCount — количество записей в наборе данных
- $i > 0 — логическое условие
Продолжение выполнения
После остановки на точке останова:
- Просмотрите значения переменных и выражений наблюдения
- При необходимости скорректируйте точки останова или выражения
- Нажмите кнопку Продолжить (F9) — выполнение продолжится до следующей точки останова или завершения скрипта
Остановка выполнения
Во время выполнения скрипта можно:
- Нажать кнопку Остановить (ESC) для аварийной остановки
- Нажать и удерживать клавишу 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 | Аварийная остановка скрипта (удерживать) |
| F5 | Добавить или удалить точку останова |
| Ctrl+F5 | Добавить наблюдение |
| Ctrl+S | Сохранение изменений в базу данных, если скрипт был открыт для редактирования в отладчике |
Настройки редактора
Перенос строк
Контекстное меню редактора > Перенос строк.
Включает или выключает автоматический перенос длинных строк. Настройка сохраняется и восстанавливается при следующем запуске отладчика.
Отображение специальных символов
Контекстное меню редактора > Показать специальные символы.
Показывает пробелы и табуляции в виде специальных символов. Удобно для поиска лишних пробелов и контроля форматирования кода.
Примеры использования
Пример 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`
- При остановке сравните значения выражений и итоговый результат.
Что даёт отладчик:
- Одновременно видно несколько ключевых показателей.
- Легче находить расхождения между промежуточными и итоговыми значениями.
Заключение
Отладчик скриптов — компактный и практичный инструмент для работы со скриптами встроенного языка. Он позволяет быстро находить ошибки в логике, контролировать переменные и подключаться к выполняющимся скриптам без изменения бизнес-процессов в приложении.
