void *sqlite3_trace(sqlite3*, void(*xTrace)(void*,const char*), void*); void *sqlite3_profile(sqlite3*, void(*xProfile)(void*,const char*, sqlite3_uint64), void*);
Это регистрирует функции обратного вызова, которые могут использоваться для отслеживания и профилирования выполнения SQL-операторов.
Функция обратного вызова, зарегистрированная sqlite3_trace(), вызвана неоднократно, когда SQL-оператором управляет sqlite3_step(). sqlite3_trace() вызван с предоставлением UTF-8 текста SQL-оператора, когда запрос начинает выполняться. Дополнительные отзывы sqlite3_trace() могли бы произойти, когда каждая вызванная подпрограмма введена. Отзывы для триггеров содержат UTF-8 SQL-комментарий, который определяет триггер.
Опция SQLITE_TRACE_SIZE_LIMIT может использоваться, чтобы ограничить длину связанного параметра в выводе sqlite3_trace().
Функция обратного вызова, зарегистрированная sqlite3_profile(), вызвана, когда каждый SQL-оператор заканчивается. Отзыв профиля содержит оригинальный текст инструкции и оценку времени выполнения в наносекундах. Время отзыва профиля находится в единицах наносекунд, однако текущее внедрение способно только к точности миллисекунды, таким образом, шесть младших значащих цифр бессмысленны. Будущие версии SQLite могли бы предоставить большую точность по отзыву профилировщика. Вызов sqlite3_trace() или sqlite3_trace_v2() отменит отзыв профиля.