538
правок
Изменения
→Подключение отладчика к работающим скриптам
= Отладчик скриптов = == Обзор =Интерфейс =
[[Файл:ScriptDebugger.png]]
'''Отладчик скриптов''' — рабочий инструмент для разработки и диагностики [[Руководство_программиста|скриптов встроенного языка]].
Он позволяет запускать скрипты в режиме отладки, останавливать выполнение на нужных строках, анализировать переменные и подключаться к уже запущенным скриптам.
Вы можете запустить отладчик при наличии прав Администратораиз:* Через меню '''Отчеты > SQL > Выполнить > Запустить отладчик''' . * Через меню '''Отчеты > Дополнительные возможности > Редактировать'''.* Горячей клавишей '''Ctrl+Alt+D''' в главном окне приложения.
* '''Запуск в режиме отладки''' — выполнение скрипта с остановкой на заданных строках
* '''Наблюдение за выражениями''' — вычисление произвольных выражений при каждой остановке
* '''Точки останова''' — остановка выполнения на выбранных строках кода
* '''AttachDebuggerПодключение к скриптам''' — подключение к уже выполняющемуся скриптузапущенному без отладчика
* '''Работа с файлами''' — открытие, сохранение и отслеживание изменений файлов скриптов
* '''Сохранение в базу данныхРасширенный редактор''' — запись отредактированных скриптов в БД- подсветка парных скобок, отображение скрытых симолов, закладки.
Основная область для написания и редактирования скрипта. Редактор поддерживает:
* Визуальное отображение точек останова (красные кружки в левом поле)
* Подсветку текущей строки выполнения (желтый фон)
* Подсветку парных скобок при установке курсора* Отображение скрытых символов* Закладки для быстрой навигации === Лог ===
Отображает:
* Вывод команд сообщений напрямую из скрипта и команды Printкомандой '''print'''
* Сообщения отладчика (остановка на breakpoint, ошибки)
=== Запуск скрипта ==Работа с отладчиком =
'''Способ 1.''' Щёлкните левой кнопкой мыши в левой части нужной строки (область номеров строк). На строке появится красный кружок — точка останова установлена. Повторный щелчок удалит её.
'''Способ 2.''' Установите курсор на строку и используйте пункт меню '''Скрипт''' > '''Добавить точку останова (F5)'''.
== Наблюдение за выражениями ==
Список '''Наблюдения''' показывает все добавленные пользователям выражения и их рассчитанные значения. Значения обновляются автоматически в момент остановки выполнения скрипта или после редактирования выражения. Для добавления наблюдения:
# Выделите текст в редакторе (например, имя переменной или выражение)
# Выберите в контекстном меню > редактора пункт '''Добавить в наблюдение'''
# Либо используйте меню '''Скрипт''' > '''Добавить наблюдение (Сtrl+F5)''' и введите выражение вручную.
'''Примеры выражений:'''
* $i > 0 — логическое условие
Меню '''Файл''' > '''Открыть и отслеживать'''.
При изменении файла во внешнем редакторе текст автоматически обновляется в отладчике.
Всегда есть возможность сохранить скрипт в файл.* Меню '''Файл''' > '''Сохранить в файл''' — Сохраняет текущий текст скрипта в файл. Если файл был открыт сохранен ранее, по умолчанию предлагается исходный предыдуший путь.
Если отладчик открыт как редактор скрипта, доступны функции по сохранению напрямую в базу данных:* Меню '''Файл''' > '''Сохранить(Ctrl+S)''' — сохранить скрипт в базу данных
* Кнопка '''Сохранить и закрыть''' — сохранить скрипт и закрыть окно отладчика
'''В отладчике:Как использовать'''# Откройте отладчик скриптов.# Включите режим отслеживания: меню '''Скрипт''' > '''Ожидать команды AttachDebugger'''.# В строке состояния появится сообщение '''Ожидание команды AttachDebugger...'''.
#'''В скриптеотладчике:'''## Откройте отладчик скриптов, главное меню '''Отчеты''' > '''SQL''' > '''Выполнить''' > '''Запустить отладчик (F9)'''.## Включите режим отслеживания:меню '''Файл''' > '''Ожидать команды AttachDebugger'''.## В строке состояния отладчика появится сообщение '''Ожидание команды AttachDebugger...'''.## Свернуть отладчик, если его закрыть то наблюдение остановится.#'''В скрипте:'Важно''## Скрипт нужно подготовить.В скрипте нужно прописать команду ''' Команда `AttachDebugger` ''' она должна быть '''первой командой''' или идти следующей строкой после тега начала скрипта '''<?>'''## Запустить скрипт стандартным образом: Сформировать печатную форму, рассчитать стоимость доставки, выполнить действие для вызова события.#'''Что происходит:'''## При выполнении команды AttachDebugger - скрипт останавливается.## Отладчик автоматически подключается к перехваченному скрипту.## Текст скрипта загружается в скриптередактор отладчика.## Можно ставить точки останова, просматривать переменные и продолжать отладку. Добавьте её в самое начало:
Пример скрипта с запросом подключения к отладчику:
<source lang="json">
<?>
AttachDebugger;
set($a, 10);
showmessage($sum);
</source>
'''Важно:'''
* Отладчик должен быть в режиме отслеживания до того, как скрипт дойдёт до команды AttachDebugger.* Команда `AttachDebugger`должна быть первой командой в скрипте.* Если режим отслеживания не включён, команда `AttachDebugger` в скрипте игнорируетсяи ничего не делает.
* В режиме отслеживания может работать только один отладчик.
* Команда `AttachDebugger` должна быть первой командой Если скрипт исполняется в скриптешедулере или в другом вспомогательном потоке, то подключится к нему не получится. Отладка работает только в текущем потоке приложения.
{| class="wikitable"
|-
| '''Ctrl+S''' || Сохранение изменений в базу данных, если скрипт был открыт для редактирования в отладчике
|-
| '''Ctrl+1..9''' || Перейти в закладку 1 .. 9 в редакторе кода
|-
| '''Ctrl+Shift+1..9''' || Добавить закладку 1 .. 9 в редакторе кода
|-
| '''Ctrl+Shift+U''' || Двигать выбранный блок влево
|-
| '''Ctrl+Shift+I''' || Двигать выбранный блок вправо
|}
Контекстное меню редактора > '''Перенос строк'''.
Настройка сохраняется и восстанавливается при следующем запуске отладчика.
Контекстное меню редактора > '''Показать специальные символы'''.
Удобно для поиска лишних пробелов и контроля форматирования кода.
'''Задача.''' Проверить корректность простого цикла суммирования. # Откройте отладчик (Отчеты > SQL > Выполнить > Запустить отладчик).# Введите скриптПример скрипта:
<source lang="json">
<?>
showmessage($sum);
</source>
План действий:
# Откройте отладчик, главное меню '''Отчеты''' > '''SQL''' > '''Выполнить''' > '''Запустить отладчик (F9)'''.
# Введите скрипт
# Установите точку останова на строке set($sum, $sum + $i);.
# '''Запустите скрипт (F9)'''.
* Можно быстро обнаружить ошибки в логике цикла.
<source lang="json">
<?>
set($a, 10);
set($b, 20);
showmessage($result);
</source>
План действий:
# Откройте отладчик.
# Введите скрипт.
# Установите точку останова на строке if($a > $b.
# Запустите скрипт (F9).
* Удобно тестировать разные комбинации входных данных.
<source lang="json">
<?>
new('TSelfADO', 'db');
db.Open('SELECT code FROM city WHERE name Like "%Москва%"'));
if(db.RecordCount > 0,
set($code, int(db.FieldByName('code'))),
showmessage($code);
</source>
План действий:
# Откройте отладчик.
# Введите скрипт.
# Установите точку останова на строке if(db.RecordCount > 0.
# Запустите скрипт (F9).
* Можно проверить конкретные значения полей перед дальнейшей обработкой.
<source lang="json">
<?>
AttachDebugger;
new('TSelfADO', 'db');
);
</source>
План действий:# Откройте отладчик скриптов.# Включите режим отслеживания меню '''Файл''' > '''Ожидать команды AttachDebugger'''.# Откройте '''Отчеты''' > '''SQL''' введите скрипт из примера.# Запустите печать документаскрипт через меню '''Выполнить''' > '''Выполнить как скрипт (F7)'''.
# Когда выполнение дойдёт до AttachDebugger, отладчик автоматически подключится.
# Установите точку останова на строке if($count > 100.
'''Что даёт отладчик:'''
* Можно разбирать сценарии, которые запускаются не из отладчика, а из бизнес-печтаных форм, дополнительных услуг и т.д.
* Скрипт становится доступен для анализа так же, как и обычный скрипт, запущенный из отладчика.
<source lang="json">
<?>
set($sum, 0);
for($i, 1, 10,
showmessage($sum);
</source>
План действий:# Откройте отладчик.# Введите скрипт.# Установите точку останова на строке `set($sum, $sum + $i);`.# Запустите скрипт (F9) и просматривайте значения `$i` и `$sum` при остановках.# Добавьте выражение наблюдения `$sum + $i` для контроля вычислений.
'''Что даёт отладчик:'''
* Удобно находить ошибки в граничных условиях цикла.
'''Задача.''' Одновременно контролировать несколько взаимосвязанных значений. # Откройте отладчик.# Введите скриптПример скрипта:
<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`
# При остановке сравните значения выражений и итоговый результат.
* Одновременно видно несколько ключевых показателей.
* Легче находить расхождения между промежуточными и итоговыми значениями.