[1] | 1 | /* Copyright (C) 2000 MySQL AB |
---|
| 2 | |
---|
| 3 | This program is free software; you can redistribute it and/or modify |
---|
| 4 | it under the terms of the GNU General Public License as published by |
---|
| 5 | the Free Software Foundation; either version 2 of the License, or |
---|
| 6 | (at your option) any later version. |
---|
| 7 | |
---|
| 8 | This program is distributed in the hope that it will be useful, |
---|
| 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
---|
| 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
---|
| 11 | GNU General Public License for more details. |
---|
| 12 | |
---|
| 13 | You should have received a copy of the GNU General Public License |
---|
| 14 | along with this program; if not, write to the Free Software |
---|
| 15 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ |
---|
| 16 | |
---|
| 17 | #ifndef _dbug_h |
---|
| 18 | #define _dbug_h |
---|
| 19 | |
---|
| 20 | #ifdef __cplusplus |
---|
| 21 | extern "C" { |
---|
| 22 | #endif |
---|
| 23 | #if !defined(DBUG_OFF) && !defined(_lint) |
---|
| 24 | extern int _db_on_,_no_db_; |
---|
| 25 | extern FILE *_db_fp_; |
---|
| 26 | extern char *_db_process_; |
---|
| 27 | extern int _db_keyword_(const char *keyword); |
---|
| 28 | extern int _db_strict_keyword_(const char *keyword); |
---|
| 29 | extern void _db_setjmp_(void); |
---|
| 30 | extern void _db_longjmp_(void); |
---|
| 31 | extern void _db_push_(const char *control); |
---|
| 32 | extern void _db_pop_(void); |
---|
| 33 | extern void _db_enter_(const char *_func_,const char *_file_,uint _line_, |
---|
| 34 | const char **_sfunc_,const char **_sfile_, |
---|
| 35 | uint *_slevel_, char ***); |
---|
| 36 | extern void _db_return_(uint _line_,const char **_sfunc_,const char **_sfile_, |
---|
| 37 | uint *_slevel_); |
---|
| 38 | extern void _db_pargs_(uint _line_,const char *keyword); |
---|
| 39 | extern void _db_doprnt_ _VARARGS((const char *format,...)); |
---|
| 40 | extern void _db_dump_(uint _line_,const char *keyword,const char *memory, |
---|
| 41 | uint length); |
---|
| 42 | extern void _db_output_(uint flag); |
---|
| 43 | extern void _db_lock_file(void); |
---|
| 44 | extern void _db_unlock_file(void); |
---|
| 45 | |
---|
| 46 | #define DBUG_ENTER(a) const char *_db_func_, *_db_file_; uint _db_level_; \ |
---|
| 47 | char **_db_framep_; \ |
---|
| 48 | _db_enter_ (a,__FILE__,__LINE__,&_db_func_,&_db_file_,&_db_level_, \ |
---|
| 49 | &_db_framep_) |
---|
| 50 | #define DBUG_LEAVE \ |
---|
| 51 | (_db_return_ (__LINE__, &_db_func_, &_db_file_, &_db_level_)) |
---|
| 52 | #define DBUG_RETURN(a1) {DBUG_LEAVE; return(a1);} |
---|
| 53 | #define DBUG_VOID_RETURN {DBUG_LEAVE; return;} |
---|
| 54 | #define DBUG_EXECUTE(keyword,a1) \ |
---|
| 55 | {if (_db_on_) {if (_db_keyword_ (keyword)) { a1 }}} |
---|
| 56 | #define DBUG_PRINT(keyword,arglist) \ |
---|
| 57 | {if (_db_on_) {_db_pargs_(__LINE__,keyword); _db_doprnt_ arglist;}} |
---|
| 58 | #define DBUG_PUSH(a1) _db_push_ (a1) |
---|
| 59 | #define DBUG_POP() _db_pop_ () |
---|
| 60 | #define DBUG_PROCESS(a1) (_db_process_ = a1) |
---|
| 61 | #define DBUG_FILE (_db_fp_) |
---|
| 62 | #define DBUG_SETJMP(a1) (_db_setjmp_ (), setjmp (a1)) |
---|
| 63 | #define DBUG_LONGJMP(a1,a2) (_db_longjmp_ (), longjmp (a1, a2)) |
---|
| 64 | #define DBUG_DUMP(keyword,a1,a2)\ |
---|
| 65 | {if (_db_on_) {_db_dump_(__LINE__,keyword,a1,a2);}} |
---|
| 66 | #define DBUG_IN_USE (_db_fp_ && _db_fp_ != stderr) |
---|
| 67 | #define DEBUGGER_OFF _no_db_=1;_db_on_=0; |
---|
| 68 | #define DEBUGGER_ON _no_db_=0 |
---|
| 69 | #define DBUG_LOCK_FILE { _db_lock_file(); } |
---|
| 70 | #define DBUG_UNLOCK_FILE { _db_unlock_file(); } |
---|
| 71 | #define DBUG_OUTPUT(A) { _db_output_(A); } |
---|
| 72 | #define DBUG_ASSERT(A) assert(A) |
---|
| 73 | #define DBUG_EXECUTE_IF(keyword,a1) \ |
---|
| 74 | {if (_db_on_) {if (_db_strict_keyword_ (keyword)) { a1 }}} |
---|
| 75 | #else /* No debugger */ |
---|
| 76 | |
---|
| 77 | #define DBUG_ENTER(a1) |
---|
| 78 | #define DBUG_RETURN(a1) return(a1) |
---|
| 79 | #define DBUG_VOID_RETURN return |
---|
| 80 | #define DBUG_EXECUTE(keyword,a1) {} |
---|
| 81 | #define DBUG_EXECUTE_IF(keyword,a1) {} |
---|
| 82 | #define DBUG_PRINT(keyword,arglist) {} |
---|
| 83 | #define DBUG_PUSH(a1) {} |
---|
| 84 | #define DBUG_POP() {} |
---|
| 85 | #define DBUG_PROCESS(a1) {} |
---|
| 86 | #define DBUG_FILE (stderr) |
---|
| 87 | #define DBUG_SETJMP setjmp |
---|
| 88 | #define DBUG_LONGJMP longjmp |
---|
| 89 | #define DBUG_DUMP(keyword,a1,a2) {} |
---|
| 90 | #define DBUG_IN_USE 0 |
---|
| 91 | #define DEBUGGER_OFF |
---|
| 92 | #define DEBUGGER_ON |
---|
| 93 | #define DBUG_LOCK_FILE |
---|
| 94 | #define DBUG_UNLOCK_FILE |
---|
| 95 | #define DBUG_OUTPUT(A) |
---|
| 96 | #define DBUG_ASSERT(A) {} |
---|
| 97 | #endif |
---|
| 98 | #ifdef __cplusplus |
---|
| 99 | } |
---|
| 100 | #endif |
---|
| 101 | #endif |
---|