Отладчик встроенных скриптов — различия между версиями
Sammy (обсуждение | вклад) (→Подключение к выполняемому скрипту (AttachDebugger)) |
Sammy (обсуждение | вклад) (→Сохранение в файл) |
||
| (не показано 45 промежуточных версий этого же участника) | |||
| Строка 1: | Строка 1: | ||
| − | = | + | = Интерфейс = |
| − | |||
| − | |||
[[Файл:ScriptDebugger.png]] | [[Файл:ScriptDebugger.png]] | ||
| Строка 7: | Строка 5: | ||
'''Отладчик скриптов''' — рабочий инструмент для разработки и диагностики скриптов встроенного языка. | '''Отладчик скриптов''' — рабочий инструмент для разработки и диагностики скриптов встроенного языка. | ||
Он позволяет запускать скрипты в режиме отладки, останавливать выполнение на нужных строках, анализировать переменные и подключаться к уже запущенным скриптам. | Он позволяет запускать скрипты в режиме отладки, останавливать выполнение на нужных строках, анализировать переменные и подключаться к уже запущенным скриптам. | ||
| − | Вы можете запустить отладчик | + | Вы можете запустить отладчик из: |
* '''Отчеты > SQL > Выполнить > Запустить отладчик''' | * '''Отчеты > SQL > Выполнить > Запустить отладчик''' | ||
* '''Отчеты > Дополнительные возможности > Редактировать''' | * '''Отчеты > Дополнительные возможности > Редактировать''' | ||
| − | + | = Основные возможности = | |
* '''Запуск в режиме отладки''' — выполнение скрипта с остановкой на заданных строках | * '''Запуск в режиме отладки''' — выполнение скрипта с остановкой на заданных строках | ||
| Строка 17: | Строка 15: | ||
* '''Наблюдение за выражениями''' — вычисление произвольных выражений при каждой остановке | * '''Наблюдение за выражениями''' — вычисление произвольных выражений при каждой остановке | ||
* '''Точки останова''' — остановка выполнения на выбранных строках кода | * '''Точки останова''' — остановка выполнения на выбранных строках кода | ||
| − | * ''' | + | * '''Подключение к скриптам''' — подключение к скрипту запущенному без отладчика |
* '''Работа с файлами''' — открытие, сохранение и отслеживание изменений файлов скриптов | * '''Работа с файлами''' — открытие, сохранение и отслеживание изменений файлов скриптов | ||
* '''Расширенный редактор''' - подсветка парных скобок, отображение скрытых симолов, закладки. | * '''Расширенный редактор''' - подсветка парных скобок, отображение скрытых симолов, закладки. | ||
| − | + | = Интерфейс отладчика = | |
| − | + | == Редактор кода == | |
Основная область для написания и редактирования скрипта. Редактор поддерживает: | Основная область для написания и редактирования скрипта. Редактор поддерживает: | ||
| Строка 30: | Строка 28: | ||
* Визуальное отображение точек останова (красные кружки в левом поле) | * Визуальное отображение точек останова (красные кружки в левом поле) | ||
* Подсветку текущей строки выполнения (желтый фон) | * Подсветку текущей строки выполнения (желтый фон) | ||
| − | * Подсветку парных скобок | + | * Подсветку парных скобок |
| − | + | * Отображение скрытых символов | |
| − | + | * Закладки для быстрой навигации | |
| + | == Лог == | ||
Отображает: | Отображает: | ||
| − | * Вывод сообщений | + | * Вывод сообщений напрямую из скрипта командой '''print''' |
* Сообщения отладчика (остановка на breakpoint, ошибки) | * Сообщения отладчика (остановка на breakpoint, ошибки) | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | == | + | == Кнопки управления == |
| − | + | * '''Запустить''' — Запуск скрипта в режиме отладки (F9). При необходимости установите точки останова, cкрипт выполнится до первой точки останова или до ошибки. | |
| − | + | * '''Остановить''' — Прерывание дальнейшего исполнения скрипта. Во время выполнения скрипта можно нажать и удерживать клавишу '''ESC''' для аварийной остановки. | |
| + | * '''Продолжить''' — Возобновление выполнения после остановки скрипта (F9) | ||
| − | = | + | = Работа с отладчиком = |
| − | + | == Установка точек останова == | |
| − | + | Точки останова можно настроить перед запуском скрипта или когда выполнение скрипта приостановлено. Добавление точки останова: | |
| − | |||
| − | |||
| − | == | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
'''Способ 1.''' Щёлкните левой кнопкой мыши в левой части нужной строки (область номеров строк). На строке появится красный кружок — точка останова установлена. Повторный щелчок удалит её. | '''Способ 1.''' Щёлкните левой кнопкой мыши в левой части нужной строки (область номеров строк). На строке появится красный кружок — точка останова установлена. Повторный щелчок удалит её. | ||
| Строка 70: | Строка 52: | ||
'''Способ 2.''' Установите курсор на строку и используйте пункт меню '''Скрипт''' > '''Добавить точку останова (F5)'''. | '''Способ 2.''' Установите курсор на строку и используйте пункт меню '''Скрипт''' > '''Добавить точку останова (F5)'''. | ||
| − | + | == Просмотр переменных == | |
| − | + | Список '''Переменные''' содержит все переменные и объекты доступные в текущем инстансе интерпретатора. Список автоматически отображаются в момент остановки выполнения скрипта. | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| + | == Наблюдение за выражениями == | ||
| + | Список '''Наблюдения''' показывает все добавленные пользователям выражения и их рассчитанные значения. Значения обновляются автоматически в момент остановки выполнения скрипта или после редактирования выражения. Для добавления наблюдения: | ||
# Выделите текст в редакторе (например, имя переменной или выражение) | # Выделите текст в редакторе (например, имя переменной или выражение) | ||
# Выберите в контекстном меню редактора пункт '''Добавить в наблюдение''' | # Выберите в контекстном меню редактора пункт '''Добавить в наблюдение''' | ||
# Либо используйте меню '''Скрипт''' > '''Добавить наблюдение (Сtrl+F5)''' и введите выражение вручную. | # Либо используйте меню '''Скрипт''' > '''Добавить наблюдение (Сtrl+F5)''' и введите выражение вручную. | ||
| − | |||
| − | |||
'''Примеры выражений:''' | '''Примеры выражений:''' | ||
| Строка 90: | Строка 67: | ||
* $i > 0 — логическое условие | * $i > 0 — логическое условие | ||
| − | + | = Работа с файлами = | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | == Открытие файла с отслеживанием == | |
Меню '''Файл''' > '''Открыть и отслеживать'''. | Меню '''Файл''' > '''Открыть и отслеживать'''. | ||
| Строка 110: | Строка 76: | ||
При изменении файла во внешнем редакторе текст автоматически обновляется в отладчике. | При изменении файла во внешнем редакторе текст автоматически обновляется в отладчике. | ||
| − | + | == Сохранение в файл == | |
| − | Меню '''Файл''' > '''Сохранить в файл'''. | + | Всегда есть возможность сохранить скрипт в файл. |
| + | * Меню '''Файл''' > '''Сохранить в файл''' — Сохраняет текущий текст скрипта в файл. Если файл был сохранен ранее, по умолчанию предлагается предыдуший путь. | ||
| − | + | * Меню '''Файл''' > '''Сохранить (Ctrl+S)''' — Когда отладчик открыт без привязки к конкретному скрипту, то сохраняет изменения в файл. | |
| − | Если файл | + | '''Важно!''' Если отладчик открыли например из '''Отчеты''' > '''Дополнительные возможности''' > '''Редактировать''' то сохранения через пункт '''Сохранить (Ctrl+S)''' сохранения '''всегда''' будет происходить в базу, в файл изменения сохранены не будут. |
| − | + | = Сохранение = | |
| − | Если отладчик открыт как редактор скрипта, доступны функции по сохранению: | + | Если отладчик открыт как редактор скрипта, доступны функции по сохранению напрямую в базу данных: |
| − | * Меню '''Файл''' > '''Сохранить''' — сохранить скрипт в базу данных | + | * Меню '''Файл''' > '''Сохранить (Ctrl+S)''' — сохранить скрипт в базу данных |
* Кнопка '''Сохранить и закрыть''' — сохранить скрипт и закрыть окно отладчика | * Кнопка '''Сохранить и закрыть''' — сохранить скрипт и закрыть окно отладчика | ||
| − | + | = Подключение отладчика к работающим скриптам = | |
| − | + | Данная возможность позволяет подключить отладчик к скриптам изначально запущеным без него. Для начала работ, отладчик нужно перевести в режим '''ожидания запросов отладки'''. Далее необходимо запустить скрипт стандартным способом. Если в скрипте будет команда AttachDebugger - отладчик это увидит и начнется процесс отладки этого скрипта. Это удобно для отладки скриптов, которые работают в своем контексте: | |
* Скриптов из печатных форм | * Скриптов из печатных форм | ||
| − | * Скриптов из системных событий | + | * Скриптов из системных событий |
* Скриптов из дополнительных услуг | * Скриптов из дополнительных услуг | ||
| − | + | '''Как использовать''' | |
| − | '''В отладчике:''' | + | #'''В отладчике:''' |
| − | # Откройте отладчик скриптов. | + | ## Откройте отладчик скриптов, главное меню '''Отчеты''' > '''SQL''' > '''Выполнить''' > '''Запустить отладчик (F9)'''. |
| − | # Включите режим отслеживания: меню ''' | + | ## Включите режим отслеживания: меню '''Файл''' > '''Ожидать команды AttachDebugger'''. |
| − | # В строке состояния появится сообщение '''Ожидание команды AttachDebugger...'''. | + | ## В строке состояния отладчика появится сообщение '''Ожидание команды AttachDebugger...'''. |
| − | + | ## Свернуть отладчик, если его закрыть то наблюдение остановится. | |
| − | '''В скрипте:''' | + | #'''В скрипте:''' |
| − | # | + | ## Скрипт нужно подготовить. В скрипте нужно прописать команду '''AttachDebugger''' она должна быть '''первой командой''' или идти следующей строкой после тега начала скрипта '''<?>''' |
| + | ## Запустить скрипт стандартным образом: Сформировать печатную форму, рассчитать стоимость доставки, выполнить действие для вызова события. | ||
| + | #'''Что происходит:''' | ||
| + | ## При выполнении команды AttachDebugger - скрипт останавливается. | ||
| + | ## Отладчик автоматически подключается к перехваченному скрипту. | ||
| + | ## Текст скрипта загружается в редактор отладчика. | ||
| + | ## Можно ставить точки останова, просматривать переменные и продолжать отладку. | ||
| + | Пример скрипта с запросом подключения к отладчику: | ||
<source lang="json"> | <source lang="json"> | ||
<?> | <?> | ||
| Строка 147: | Строка 121: | ||
showmessage($sum); | showmessage($sum); | ||
</source> | </source> | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
'''Важно:''' | '''Важно:''' | ||
| Строка 161: | Строка 129: | ||
* Если скрипт исполняется в шедулере или в другом вспомогательном потоке, то подключится к нему не получится. Отладка работает только в текущем потоке приложения. | * Если скрипт исполняется в шедулере или в другом вспомогательном потоке, то подключится к нему не получится. Отладка работает только в текущем потоке приложения. | ||
| − | + | = Горячие клавиши = | |
{| class="wikitable" | {| class="wikitable" | ||
| Строка 182: | Строка 150: | ||
|} | |} | ||
| − | + | = Настройки редактора = | |
| − | + | == Перенос строк == | |
Контекстное меню редактора > '''Перенос строк'''. | Контекстное меню редактора > '''Перенос строк'''. | ||
| Строка 191: | Строка 159: | ||
Настройка сохраняется и восстанавливается при следующем запуске отладчика. | Настройка сохраняется и восстанавливается при следующем запуске отладчика. | ||
| − | + | == Отображение специальных символов == | |
Контекстное меню редактора > '''Показать специальные символы'''. | Контекстное меню редактора > '''Показать специальные символы'''. | ||
| Строка 198: | Строка 166: | ||
Удобно для поиска лишних пробелов и контроля форматирования кода. | Удобно для поиска лишних пробелов и контроля форматирования кода. | ||
| − | + | = Примеры использования = | |
| − | + | == Пример 1: Отладка скрипта с точками останова == | |
| − | '''Задача.''' Проверить корректность простого цикла суммирования. | + | '''Задача.''' Проверить корректность простого цикла суммирования. Пример скрипта: |
| − | |||
| − | |||
| − | |||
<source lang="json"> | <source lang="json"> | ||
<?> | <?> | ||
| Строка 216: | Строка 181: | ||
showmessage($sum); | showmessage($sum); | ||
</source> | </source> | ||
| + | |||
| + | План действий: | ||
| + | # Откройте отладчик, главное меню '''Отчеты''' > '''SQL''' > '''Выполнить''' > '''Запустить отладчик (F9)'''. | ||
| + | # Введите скрипт | ||
# Установите точку останова на строке set($sum, $sum + $i);. | # Установите точку останова на строке set($sum, $sum + $i);. | ||
# '''Запустите скрипт (F9)'''. | # '''Запустите скрипт (F9)'''. | ||
| Строка 226: | Строка 195: | ||
* Можно быстро обнаружить ошибки в логике цикла. | * Можно быстро обнаружить ошибки в логике цикла. | ||
| − | + | == Пример 2: Отладка скрипта с условиями == | |
| − | |||
| − | |||
| − | + | '''Задача.''' Проверить, корректно ли выбирается максимум из двух значений. Пример скрипта: | |
| − | |||
<source lang="json"> | <source lang="json"> | ||
<?> | <?> | ||
| Строка 242: | Строка 208: | ||
showmessage($result); | showmessage($result); | ||
</source> | </source> | ||
| + | |||
| + | План действий: | ||
| + | # Откройте отладчик. | ||
| + | # Введите скрипт. | ||
# Установите точку останова на строке if($a > $b. | # Установите точку останова на строке if($a > $b. | ||
# Запустите скрипт (F9). | # Запустите скрипт (F9). | ||
| Строка 252: | Строка 222: | ||
* Удобно тестировать разные комбинации входных данных. | * Удобно тестировать разные комбинации входных данных. | ||
| − | + | == Пример 3: Отладка скрипта с работой с базой данных == | |
| − | '''Задача.''' Проверить правильность выборки и обработки данных из базы. | + | '''Задача.''' Проверить правильность выборки и обработки данных из базы. Пример скрипта: |
| − | |||
| − | |||
| − | |||
<source lang="json"> | <source lang="json"> | ||
<?> | <?> | ||
| Строка 268: | Строка 235: | ||
showmessage($code); | showmessage($code); | ||
</source> | </source> | ||
| + | |||
| + | План действий: | ||
| + | # Откройте отладчик. | ||
| + | # Введите скрипт. | ||
# Установите точку останова на строке if(db.RecordCount > 0. | # Установите точку останова на строке if(db.RecordCount > 0. | ||
# Запустите скрипт (F9). | # Запустите скрипт (F9). | ||
| Строка 278: | Строка 249: | ||
* Можно проверить конкретные значения полей перед дальнейшей обработкой. | * Можно проверить конкретные значения полей перед дальнейшей обработкой. | ||
| − | + | == Пример 4: Отладка скрипта через AttachDebugger == | |
| − | '''Задача.''' Подключиться к скрипту | + | '''Задача.''' Подключиться к скрипту запущенному без отладчика. |
| − | + | Пример скрипта: | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
<source lang="json"> | <source lang="json"> | ||
<?> | <?> | ||
| Строка 299: | Строка 264: | ||
); | ); | ||
</source> | </source> | ||
| + | |||
| + | План действий: | ||
| + | # Откройте отладчик скриптов. | ||
| + | # Включите режим отслеживания меню '''Файл''' > '''Ожидать команды AttachDebugger'''. | ||
| + | # Откройте '''Отчеты''' > '''SQL''' введите скрипт из примера. | ||
| + | # Запустите скрипт через меню '''Выполнить''' > '''Выполнить как скрипт (F7)'''. | ||
# Когда выполнение дойдёт до AttachDebugger, отладчик автоматически подключится. | # Когда выполнение дойдёт до AttachDebugger, отладчик автоматически подключится. | ||
# Установите точку останова на строке if($count > 100. | # Установите точку останова на строке if($count > 100. | ||
| Строка 307: | Строка 278: | ||
* Скрипт становится доступен для анализа так же, как и обычный скрипт, запущенный из отладчика. | * Скрипт становится доступен для анализа так же, как и обычный скрипт, запущенный из отладчика. | ||
| − | + | == Пример 5: Отладка скрипта с циклом FOR == | |
| − | |||
| − | |||
| − | + | '''Задача.''' Проверить корректность вычислений в цикле FOR. Пример скрипта: | |
| − | |||
<source lang="json"> | <source lang="json"> | ||
<?> | <?> | ||
| Строка 321: | Строка 289: | ||
showmessage($sum); | showmessage($sum); | ||
</source> | </source> | ||
| + | |||
| + | План действий: | ||
| + | # Откройте отладчик. | ||
| + | # Введите скрипт. | ||
# Установите точку останова на строке set($sum, $sum + $i);. | # Установите точку останова на строке set($sum, $sum + $i);. | ||
# Запустите скрипт (F9) и просматривайте значения $i и $sum при остановках. | # Запустите скрипт (F9) и просматривайте значения $i и $sum при остановках. | ||
| Строка 329: | Строка 301: | ||
* Удобно находить ошибки в граничных условиях цикла. | * Удобно находить ошибки в граничных условиях цикла. | ||
| − | + | == Пример 6: Использование выражений наблюдения == | |
| − | '''Задача.''' Одновременно контролировать несколько взаимосвязанных значений. | + | '''Задача.''' Одновременно контролировать несколько взаимосвязанных значений. Пример скрипта: |
| − | |||
| − | |||
| − | |||
<source lang="json"> | <source lang="json"> | ||
<?> | <?> | ||
| Строка 343: | Строка 312: | ||
showmessage($result); | showmessage($result); | ||
</source> | </source> | ||
| + | |||
| + | План действий: | ||
| + | # Откройте отладчик. | ||
| + | # Введите скрипт. | ||
# Установите точку останова на строке set($result, $a + $b + $c);. | # Установите точку останова на строке set($result, $a + $b + $c);. | ||
# Запустите скрипт (F9). | # Запустите скрипт (F9). | ||
Текущая версия на 11:35, 4 декабря 2025
Интерфейс
Отладчик скриптов — рабочий инструмент для разработки и диагностики скриптов встроенного языка. Он позволяет запускать скрипты в режиме отладки, останавливать выполнение на нужных строках, анализировать переменные и подключаться к уже запущенным скриптам. Вы можете запустить отладчик из:
- Отчеты > SQL > Выполнить > Запустить отладчик
- Отчеты > Дополнительные возможности > Редактировать
Основные возможности
- Запуск в режиме отладки — выполнение скрипта с остановкой на заданных строках
- Просмотр переменных — автоматическое отображение значений всех переменных при остановке
- Наблюдение за выражениями — вычисление произвольных выражений при каждой остановке
- Точки останова — остановка выполнения на выбранных строках кода
- Подключение к скриптам — подключение к скрипту запущенному без отладчика
- Работа с файлами — открытие, сохранение и отслеживание изменений файлов скриптов
- Расширенный редактор - подсветка парных скобок, отображение скрытых симолов, закладки.
Интерфейс отладчика
Редактор кода
Основная область для написания и редактирования скрипта. Редактор поддерживает:
- Подсветку синтаксиса
- Нумерацию строк
- Визуальное отображение точек останова (красные кружки в левом поле)
- Подсветку текущей строки выполнения (желтый фон)
- Подсветку парных скобок
- Отображение скрытых символов
- Закладки для быстрой навигации
Лог
Отображает:
- Вывод сообщений напрямую из скрипта командой print
- Сообщения отладчика (остановка на breakpoint, ошибки)
Кнопки управления
- Запустить — Запуск скрипта в режиме отладки (F9). При необходимости установите точки останова, cкрипт выполнится до первой точки останова или до ошибки.
- Остановить — Прерывание дальнейшего исполнения скрипта. Во время выполнения скрипта можно нажать и удерживать клавишу ESC для аварийной остановки.
- Продолжить — Возобновление выполнения после остановки скрипта (F9)
Работа с отладчиком
Установка точек останова
Точки останова можно настроить перед запуском скрипта или когда выполнение скрипта приостановлено. Добавление точки останова:
Способ 1. Щёлкните левой кнопкой мыши в левой части нужной строки (область номеров строк). На строке появится красный кружок — точка останова установлена. Повторный щелчок удалит её.
Способ 2. Установите курсор на строку и используйте пункт меню Скрипт > Добавить точку останова (F5).
Просмотр переменных
Список Переменные содержит все переменные и объекты доступные в текущем инстансе интерпретатора. Список автоматически отображаются в момент остановки выполнения скрипта.
Наблюдение за выражениями
Список Наблюдения показывает все добавленные пользователям выражения и их рассчитанные значения. Значения обновляются автоматически в момент остановки выполнения скрипта или после редактирования выражения. Для добавления наблюдения:
- Выделите текст в редакторе (например, имя переменной или выражение)
- Выберите в контекстном меню редактора пункт Добавить в наблюдение
- Либо используйте меню Скрипт > Добавить наблюдение (Сtrl+F5) и введите выражение вручную.
Примеры выражений:
- $a + $b — сумма переменных
- db.RecordCount — количество записей в наборе данных
- $i > 0 — логическое условие
Работа с файлами
Открытие файла с отслеживанием
Меню Файл > Открыть и отслеживать.
Открывает файл скрипта и включает автоматическое отслеживание изменений на диске. При изменении файла во внешнем редакторе текст автоматически обновляется в отладчике.
Сохранение в файл
Всегда есть возможность сохранить скрипт в файл.
- Меню Файл > Сохранить в файл — Сохраняет текущий текст скрипта в файл. Если файл был сохранен ранее, по умолчанию предлагается предыдуший путь.
- Меню Файл > Сохранить (Ctrl+S) — Когда отладчик открыт без привязки к конкретному скрипту, то сохраняет изменения в файл.
Важно! Если отладчик открыли например из Отчеты > Дополнительные возможности > Редактировать то сохранения через пункт Сохранить (Ctrl+S) сохранения всегда будет происходить в базу, в файл изменения сохранены не будут.
Сохранение
Если отладчик открыт как редактор скрипта, доступны функции по сохранению напрямую в базу данных:
- Меню Файл > Сохранить (Ctrl+S) — сохранить скрипт в базу данных
- Кнопка Сохранить и закрыть — сохранить скрипт и закрыть окно отладчика
Подключение отладчика к работающим скриптам
Данная возможность позволяет подключить отладчик к скриптам изначально запущеным без него. Для начала работ, отладчик нужно перевести в режим ожидания запросов отладки. Далее необходимо запустить скрипт стандартным способом. Если в скрипте будет команда AttachDebugger - отладчик это увидит и начнется процесс отладки этого скрипта. Это удобно для отладки скриптов, которые работают в своем контексте:
- Скриптов из печатных форм
- Скриптов из системных событий
- Скриптов из дополнительных услуг
Как использовать
- В отладчике:
- Откройте отладчик скриптов, главное меню Отчеты > SQL > Выполнить > Запустить отладчик (F9).
- Включите режим отслеживания: меню Файл > Ожидать команды AttachDebugger.
- В строке состояния отладчика появится сообщение Ожидание команды AttachDebugger....
- Свернуть отладчик, если его закрыть то наблюдение остановится.
- В скрипте:
- Скрипт нужно подготовить. В скрипте нужно прописать команду AttachDebugger она должна быть первой командой или идти следующей строкой после тега начала скрипта <?>
- Запустить скрипт стандартным образом: Сформировать печатную форму, рассчитать стоимость доставки, выполнить действие для вызова события.
- Что происходит:
- При выполнении команды AttachDebugger - скрипт останавливается.
- Отладчик автоматически подключается к перехваченному скрипту.
- Текст скрипта загружается в редактор отладчика.
- Можно ставить точки останова, просматривать переменные и продолжать отладку.
Пример скрипта с запросом подключения к отладчику:
<?>
AttachDebugger;
set($a, 10);
set($b, 20);
set($sum, $a + $b);
showmessage($sum);
Важно:
- Отладчик должен быть в режиме отслеживания до того, как скрипт дойдёт до команды AttachDebugger.
- Команда `AttachDebugger` должна быть первой командой в скрипте.
- Если режим отслеживания не включён, команда AttachDebugger в скрипте игнорируется и ничего не делает.
- В режиме отслеживания может работать только один отладчик.
- Если скрипт исполняется в шедулере или в другом вспомогательном потоке, то подключится к нему не получится. Отладка работает только в текущем потоке приложения.
Горячие клавиши
| Клавиша | Действие |
|---|---|
| F9 | Запустить скрипт в режиме отладки или продолжить исполнение |
| ESC | Аварийная остановка скрипта (удерживать) |
| F5 | Добавить или удалить точку останова |
| Ctrl+F5 | Добавить наблюдение |
| Ctrl+S | Сохранение изменений в базу данных, если скрипт был открыт для редактирования в отладчике |
| Ctrl+1..9 | Перейти в закладку 1 .. 9 в редакторе кода |
| Ctrl+Shift+1..9 | Добавить закладку 1 .. 9 в редакторе кода |
Настройки редактора
Перенос строк
Контекстное меню редактора > Перенос строк.
Включает или выключает автоматический перенос длинных строк. Настройка сохраняется и восстанавливается при следующем запуске отладчика.
Отображение специальных символов
Контекстное меню редактора > Показать специальные символы.
Показывает пробелы и табуляции в виде специальных символов. Удобно для поиска лишних пробелов и контроля форматирования кода.
Примеры использования
Пример 1: Отладка скрипта с точками останова
Задача. Проверить корректность простого цикла суммирования. Пример скрипта:
<?>
set($i, 10);
set($sum, 0);
while($i > 0,
set($sum, $sum + $i);
set($i, $i - 1)
);
showmessage($sum);
План действий:
- Откройте отладчик, главное меню Отчеты > SQL > Выполнить > Запустить отладчик (F9).
- Введите скрипт
- Установите точку останова на строке 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 Like "%Москва%"');
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;
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.
- Откройте Отчеты > SQL введите скрипт из примера.
- Запустите скрипт через меню Выполнить > Выполнить как скрипт (F7).
- Когда выполнение дойдёт до 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
- При остановке сравните значения выражений и итоговый результат.
Что даёт отладчик:
- Одновременно видно несколько ключевых показателей.
- Легче находить расхождения между промежуточными и итоговыми значениями.
