Программирование >>  Создание клиентов mysql 

1 ... 172 173 174 [ 175 ] 176 177 178 ... 201




ВЭТОЙ главе рассматриваются способы расширения функциональных возможностей сервера MySQL. Сюда входит написание собственных функций и процедур, а также создание наборов символов. Описываются также средства отладки, имеющиеся в MySQL.

Библиотека функций отладки

В MySQL входит библиотека функций отладки, первоначально созданная Фредом Фишем (Fred Fish). Чтобы разрешить мование, нужно на этапе компиляции программы вызвать сценарии igure с опцией --debug. Если в распоряжении имеется бинарный дистрибутив, проверьте версию какого-либо исполняемого файла. Программы, скомпилированные с поддержкой отладки, имеют суффикс -debug. Библиотека функций отладки является частью библиотека lient, о которой рассказывалось в главе 16, Использование библиотеки языка С . Макросы библиотеки объявлены в файле dbug. h.

Названия всех макросов начинаются с префикса DBUG (табл. 31.1). Если нужно отключить отладку, определите макроконстанту DBUG OFF. При ее наличии все остальные макросы игнорируются.

Макрос

DBUG ENTER(функция)

Описание

Этот макрос принимает имя функции, в которую входит программа. Его нужно указывать после объявления локальных переменных, но перед вызовом каких-либо инструкций.

DBUG



Макрос

DBUG EXECUTE(ключевое слово, инструкция)

DBUG FILE

DBUG LONGJMP(среда, значение)

DBUG POP ()

DBUGPRINT [ключевое слово, (формат [ f аргументы]) )

DBUG PROCES

DBUG PUSH (формат)

Описание

Этот макрос помечает указанную инструкцию меткой.

DBUG EXECUTE( where , print where(tmp, cache ););

Эта макроконстанта инкапсулирует дескриптор выходного файла, в который записывается отладочнаяинформация.

fprintf(DBUG FILE,

\nWHERE:(%s) ,info);

Если в программе используется функция longjmp (), замените ее данным макросом.

DBUG LONGJMP{env, val);

Этот макрос восстанавливает пред1дущее состояние отладки.

DBUG POP{) ;

Этот макрос записывает отладочную формацию в файловый поток, как если бы была вызвана функции ntf{) с константой DBUGFILE в качестве дескриптора. Первые лент- это ключевое которое можно использовать с описанным ниже флагов d. Второй аргумент- это набор параметров, передаваемый функции fprintf ().

DBUG PRINT( mfunkt , ( name: %s ,name));

Этот макрос задает имя текущего процесса.

DBUG PROCESS(argv[0] ) ;

Этот макрос задает новые параметры для текущего сеанса отладки. Все они помещаются в стек, поэтому можно восстанавливать предыдущие состояния с помощью макроса DBUG POP ().

DBUG PUSH( d:t );



Библиотека функций отладки 543

Макрос

DBUG RETURN(значение)

DBUG SE реда)

DBUG VOID RETURN

Описание

Этот макрос заменяет инструкцию return. Если функция ничего не возвращает, пользуйтесь макросом DBUG VOID RETURN ().

DBUG RETURN(TRUE);

Этот макрос заменяет функцию setjmp ().

DBUG SETJMP(env);

Этот макрос указывает на то, что функция не возвращает никаких значений

Отладка функции начинается того, что в ее начало помещается макрос DBUGENTER (). Затем все вызовы инструкции return заменяются либо макросов №TURN (), либо DBUG VOID RETURN (). Это позволяет отладчику определять, когда управление передается той или иной функции.

Макрос DBUGEXECUT) помечает отдельную строку кода ключевым словом. Макрос RINT () записывает сообщение в отладочный файл. Можно напрямую работать с этим файлом благодаря макроконстанте DBUG FILE, в которой хранится его дескриптор.

В листинга .1 показан пример отладки функции, которая вычисляет факториал заданного целого числа.

ttinclude <dbug.h>

int factorial(register int value) {

DBUG ENTER( factorial );

DBUG PRINT ( find , ( find %d factorial , value]

if (value > 1)

value *= factorial(value - 1);

DBUG PRINT( result , ( result is %d , value)); DBUG RETURN(value);

Программа, работающая с библиотекой функций отладки, обычно начинает отладку, вызывая макрос DBUG PUS ). Утилиты MySQL вкл ючают отладку, если получен соответствующий аргумент командной строки или если установлена специальная переменная среды. Об опциях -debug и -I рассказывалось в главе 14, Утилиты командной строки .



1 ... 172 173 174 [ 175 ] 176 177 178 ... 201

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика