DBTrace — утилита для запуска пользовательской трассировки Firebird через fbtracemgr.exe, сохранения исходного trace-лога и формирования отчетов по событиям, ошибкам и времени выполнения SQL-запросов.
Если говорить совсем просто, DBTrace — это «черный ящик» для программы, работающей с базой Firebird. Пока DBTrace включен, он записывает, что происходило на сервере: какие запросы запускались, какие процедуры и триггеры выполнялись, были ли ошибки и сколько времени заняли завершенные операции. Эти сведения помогают программисту понять причину зависания, медленной работы или ошибки.
Обычному пользователю не требуется знать SQL, устройство базы или параметры Firebird Trace. Для первого сбора почти всегда достаточно рекомендуемого пресета — DBTrace сама выставит безопасный и достаточно полный набор настроек.
Билд программы находится в папке:
\\\Secure FTP\Share42\Agbis\_NonVersion\
Главное правило: если разработчик не дал другие точные настройки, прочитайте Короткую интсрукцию . Не пытайтесь уменьшать количество событий или ставить фильтры «на глаз»: из-за этого можно потерять именно ту часть лога, которая объясняет проблему.
DBTrace позволяет работать с Firebird Trace без ручного запуска fbtracemgr из командной строки.
С помощью программы можно:

При запуске DBTrace автоматически ищет установленные экземпляры Firebird и показывает их в верхней части формы.
Программа работает с локальным сервером 127.0.0.1. Для подключения к службе Firebird используются:
SYSDBA;masterkey;service_mgr.Пароль в DBTrace.ini не сохраняется. Техническое имя активной trace-сессии сохраняется: оно нужно, чтобы после перезапуска DBTrace найти уже работающую серверную сессию и не запустить дубликат.
Выберите Firebird, который обслуживает нужную базу. Порт и путь к fbtracemgr.exe будут подставлены автоматически. Если автоматический поиск не дал нужного результата, порт можно указать вручную.

Базы.Добавить.Выбрать и укажите файл базы, например E:\Agbis\DB\ARM.FDB.Включить базу.Параметры справа относятся только к выбранной базе. Для каждой базы сохраняется собственный набор настроек.

SQL — начало и завершение SQL-запросов;Транзакции — начало, подтверждение и откат транзакций;Соединения — подключения и отключения;Процедуры — выполнение хранимых процедур;Триггеры — выполнение триггеров.Ошибки — ошибки Firebird;Предупреждения — предупреждения Firebird.Это порог на уровне Firebird Trace (time_threshold). Он определяет, какие события Firebird запишет в исходный trace-лог.
Например, значение 1000 означает, что Firebird будет отбирать события с порогом 1000 мс. Значение 0 отключает ограничение и создает наиболее подробный лог.
Порог на вкладке
Базыи порог на вкладкеОтчетывыполняют разные задачи. Первый ограничивает сбор исходного лога, второй фильтрует уже собранные данные при формированииslow_sql.txt.
Вкладка содержит готовые профили и точные параметры Firebird Trace для выбранной базы.

Пользовательский — текущий набор параметров без автоматического изменения;Медленные SQL — SQL, ошибки и предупреждения, порог 1000 мс;SQL с планами — все SQL с обычным и подробным планами, порог 0 мс;Ошибки и предупреждения — только диагностические сообщения;Соединения — подключения и транзакции;Процедуры и триггеры — процедуры, функции и триггеры;Полная диагностика — все поддерживаемые события, планы, контекст и sweep, порог 0 мс.Профиль меняет параметры выбранной базы, но не меняет путь к базе, флажок Включить базу и ограничения длины SQL/аргументов. После выбора профиля параметры можно скорректировать вручную.
log_statement_prepare);log_statement_free);print_plan);explain_plan).ID соединения — трассировать только указанное подключение; 0 означает все подключения;Максимальная длина SQL — от 300 до 32768 символов, по умолчанию 4096;Максимальная длина аргумента — от 0 до 8192 символов, по умолчанию 256;Максимальное число аргументов — от 0 до 1000, по умолчанию 30;include_filter;exclude_filter;include_gds_codes;exclude_gds_codes.Пустое поле означает, что соответствующий фильтр не используется. Синтаксис регулярных выражений проверяет Firebird при запуске trace-сессии.
Добавьте базы в список и настройте каждую отдельно. В trace-конфиг попадают только базы с установленным флажком Включить базу.
DBTrace запускает одну пользовательскую trace-сессию с отдельной секцией database для каждой включенной базы. Вывод fbtracemgr сохраняется в общий исходный лог текущего запуска.
Перед запуском проверьте:
Нажмите Старт. DBTrace сохранит активный trace-конфиг и запустит fbtracemgr в фоне.
Конфигурация всегда включает print_perf = true. Благодаря этому завершенные SQL-события содержат время выполнения и счетчики чтений, записей и выборок.
Активный лог создается в папке:
Temp\trace_log
Пример имени:
ARM_trace_20260813_150503.log
Если закрыть окно крестиком во время активной трассировки или ожидания Firebird, DBTrace не завершится, а свернется в область уведомлений Windows. Чтобы вернуть окно, дважды нажмите значок DBTrace в трее.
Если трассировка не запущена, крестик закрывает программу.
DBTrace проверяет состояние своего fbtracemgr каждые 5 секунд. Если Firebird был перезапущен, серверная trace-сессия и обслуживающий ее fbtracemgr завершаются. DBTrace замечает это и с интервалом 15 секунд пытается создать новую trace-сессию. После возвращения Firebird сбор продолжается автоматически, новые события дописываются в тот же активный лог.
В строке состояния и подсказке значка в трее отображается, работает трассировка или ожидается восстановление Firebird.
Если перезапущен сам DBTrace, программа читает сохраненное техническое имя сессии и сначала проверяет, не продолжает ли прежняя серверная сессия работать. Если она существует, дубликат не создается. Если сессия потеряна, DBTrace запускает новую и продолжает тот же сбор.
Важно:
Стоп явно отменяет автоматическое восстановление;Стоп, DBTrace локально завершает свой fbtracemgr, закрывает лог и не запускает трассировку снова;Если закрыть окно крестиком во время активной трассировки, DBTrace не завершится, а свернется в область уведомлений Windows. Чтобы вернуть окно, дважды нажмите значок DBTrace в трее.
Если трассировка не запущена, крестик закрывает программу.
Нажмите Стоп. DBTrace отправит команду остановки созданной им trace-сессии, дождется завершения своего процесса fbtracemgr и добавит время остановки к имени лога.
Пример:
ARM_trace_20260813_150503__20260813_151245.log
DBTrace управляет только тем процессом и той trace-сессией, которые запустил сам. Программа не завершает посторонние процессы fbtracemgr.exe.
Рабочая папка Temp создается рядом с DBTrace.exe. Если программа уже запущена из папки с именем Temp, вложенная папка Temp\Temp не создается.
Основные файлы:
Temp\DBTrace.ini — сохраненная пользовательская сессия и настройки отчетов;Temp\fbtrace.active.conf — последний сформированный trace-конфиг;Temp\trace_log\*.log — новые и еще не обработанные trace-логи;Temp\trace_log\trace_*\ — папки сформированных отчетов.После построения отчета выбранный лог переносится в папку отчета и исчезает из списка необработанных логов.
Отчеты.Лог.SQL от, мс.Скрывать системные SQL Firebird.Сформировать.
Порог отчета применяется к уже записанным завершенным запросам. При значении 0 в отчет попадут все завершенные выполнения, включая очень быстрые.
Флажок Скрывать системные SQL Firebird исключает запросы к системным объектам RDB$, MON$ и SEC$. Настройка включена по умолчанию и сохраняется вместе с порогом отчета.
Фильтр намеренно не скрывает обычные SELECT к пользовательским таблицам. Такие запросы мог выполнить как пользователь, так и клиентская программа, и надежно отличить их по trace-логу невозможно.
Firebird обычно пишет два события одного выполнения:
EXECUTE_STATEMENT_START — запрос начался, итогового времени еще нет;EXECUTE_STATEMENT_FINISH — запрос завершился, указано фактическое время.slow_sql.txt учитывает только EXECUTE_STATEMENT_FINISH. Поэтому один завершенный запрос появляется в отчете один раз. Для старых архивных логов без стандартного имени события используется наличие измеренного времени.
Trace фиксирует все подходящие запросы, пришедшие на Firebird. Например, IBExpert может автоматически читать метаданные, ограничения, поля и повторно загружать измененную запись. DBTrace не создает эти запросы, а только записывает события сервера.
Системные запросы можно убрать из отчета соответствующим флажком. Обычные запросы к пользовательским таблицам останутся видимыми.
Фактическое время есть в завершенном событии EXECUTE_STATEMENT_FINISH и выводится в slow_sql.txt строкой вида:
Дата события: 13.08.2026 15:05:07.106
Время: 28 ms | БД: ARM | Conn: 1 | Tran: 2
Следом выводятся счетчики Records, Reads, Writes, Fetches, Marks, текст SQL и план, если Firebird его предоставил.
В summary.txt можно увидеть, например:
Всего событий: 2400017
SQL с измеренным временем: 1
Среднее время SQL: 39138 ms
Максимальное время SQL: 39138 ms
Суммарно: reads=1, writes=1010, fetches=6288916
Сессии 1
SQL 4
Процедуры 200001
Триггеры 2200011
Значения означают следующее:
Всего событий — количество всех распознанных событий Firebird в логе. Это не количество действий пользователя и не количество SQL-запросов;SQL с измеренным временем — количество завершенных SQL, у которых Firebird указал длительность;Среднее время SQL — среднее время этих завершенных SQL;Максимальное время SQL — самое большое измеренное время;reads — страницы базы, которые Firebird пришлось физически прочитать с диска;writes — страницы базы, записанные Firebird. Это не число команд UPDATE и не число измененных строк;fetches — обращения к страницам через буферный кэш Firebird. Это не число полученных строк и не число запросов;Records — операции со строками, если Firebird предоставил этот показатель;Marks — страницы, помеченные как измененные в кэше;Сессии, SQL, Процедуры, Триггеры — количество событий соответствующего типа.Большое значение fetches при маленьком reads обычно означает, что Firebird много раз обращался к страницам, которые уже находились в памяти, и редко читал их с диска. Само по себе это не ошибка, но вместе с долгим временем может указывать на большой объем работы или неудачный план запроса.
Значение writes=1010 не означает, что пользователь выполнил 1010 обновлений. Две команды UPDATE могут вызвать множество триггеров, изменить индексы и служебные страницы, а также затронуть много записей. Firebird считает работу на уровне страниц базы, а не на уровне нажатий пользователя.
Одно действие пользователя может запустить один SQL, тот — процедуру, а процедура — триггеры для большого количества строк. Каждый запуск и завершение объекта записываются отдельными trace-событиями. Поэтому два UPDATE могут породить сотни тысяч или миллионы событий процедур и триггеров.
Это не означает, что DBTrace продублировал два действия миллионы раз. Сводка показывает фактическую внутреннюю работу Firebird. Для анализа важно сопоставлять эти числа с временем проблемы, SQL, планами и счетчиками производительности.
Папка создается внутри Temp\trace_log и называется по времени начала и остановки:
trace_20260813_150503_20260813_151245
Внутри находятся:
summary.txt — количество событий, среднее и максимальное время SQL, суммарные показатели чтения/записи/выборки;errors.txt — ошибки и предупреждения Firebird;slow_sql.txt — завершенные SQL-запросы, прошедшие порог и фильтр системного SQL.Все сформированные отчеты сохраняются в UTF-8.

DBTrace сначала читает исходный лог как UTF-8. Если конкретная версия fbtracemgr в Windows записала вывод в OEM-кодировке консоли, программа автоматически повторяет чтение в OEM-кодировке.
Отчеты всегда сохраняются в UTF-8. Это устраняет ошибку No mapping for the Unicode character exists in the target multi-byte code page при формировании отчета с символами, отсутствующими в системной ANSI-кодировке.
Проверьте:
exclude_filter.Если после старта в базе ничего не происходило, лог может быть пустым или почти пустым.
Наиболее частые причины:
fbtracemgr.exe больше не существует;Для диагностики проверьте сообщение в строке состояния и файл Temp\fbtrace.active.conf. DBTrace показывает вывод fbtracemgr, а пароль в диагностических командных строках маскируется.
При закрытии DBTrace сохраняет выбранный Firebird, порт, список баз, все параметры трассировки, порог отчета и флажок системного SQL в Temp\DBTrace.ini.
После обновления программы старый INI остается совместимым: отсутствующие параметры получают безопасные значения по умолчанию.
Старт.Стоп.Отчеты.Сформировать.Temp\trace_log.Основные сценарии DBTrace покрыты автоматическими тестами DUnitX: параметры trace-конфига и их ограничения, сохранение INI без пароля, форматы событий Firebird, кодировки, время выполнения, планы, счетчики производительности, отчеты, исключение событий START и фильтр системного SQL.