2001-02-17 13:19:19 +01:00
|
|
|
/*********************************************************************
|
|
|
|
Debug utilities for Innobase
|
|
|
|
|
|
|
|
(c) 1994, 1995 Innobase Oy
|
|
|
|
|
|
|
|
Created 1/30/1994 Heikki Tuuri
|
|
|
|
**********************************************************************/
|
|
|
|
|
|
|
|
#ifndef ut0dbg_h
|
|
|
|
#define ut0dbg_h
|
|
|
|
|
2001-04-20 14:18:46 +02:00
|
|
|
#include "univ.i"
|
2001-02-17 13:19:19 +01:00
|
|
|
#include <stdlib.h>
|
|
|
|
#include "os0thread.h"
|
|
|
|
|
|
|
|
extern ulint ut_dbg_zero; /* This is used to eliminate
|
|
|
|
compiler warnings */
|
|
|
|
extern ibool ut_dbg_stop_threads;
|
|
|
|
|
|
|
|
extern ulint* ut_dbg_null_ptr;
|
|
|
|
|
2004-03-12 12:46:26 +01:00
|
|
|
extern const char* ut_dbg_msg_assert_fail;
|
|
|
|
extern const char* ut_dbg_msg_trap;
|
|
|
|
extern const char* ut_dbg_msg_stop;
|
2003-06-15 00:04:28 +02:00
|
|
|
|
2004-03-12 12:46:26 +01:00
|
|
|
#define ut_a(EXPR) do {\
|
2003-06-15 00:04:28 +02:00
|
|
|
if (!((ulint)(EXPR) + ut_dbg_zero)) {\
|
|
|
|
ut_print_timestamp(stderr);\
|
2004-03-12 12:46:26 +01:00
|
|
|
fprintf(stderr, ut_dbg_msg_assert_fail,\
|
|
|
|
os_thread_pf(os_thread_get_curr_id()), __FILE__,\
|
2003-06-15 00:04:28 +02:00
|
|
|
(ulint)__LINE__);\
|
2004-03-12 12:46:26 +01:00
|
|
|
fputs("InnoDB: Failing assertion: " #EXPR "\n", stderr);\
|
|
|
|
fputs(ut_dbg_msg_trap, stderr);\
|
2001-02-17 13:19:19 +01:00
|
|
|
ut_dbg_stop_threads = TRUE;\
|
2004-03-12 12:46:26 +01:00
|
|
|
if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = NULL;\
|
2001-02-17 13:19:19 +01:00
|
|
|
}\
|
|
|
|
if (ut_dbg_stop_threads) {\
|
2004-03-12 12:46:26 +01:00
|
|
|
fprintf(stderr, ut_dbg_msg_stop,\
|
|
|
|
os_thread_pf(os_thread_get_curr_id()), __FILE__, (ulint)__LINE__);\
|
2001-02-17 13:19:19 +01:00
|
|
|
os_thread_sleep(1000000000);\
|
|
|
|
}\
|
2004-03-12 12:46:26 +01:00
|
|
|
} while (0)
|
2001-02-17 13:19:19 +01:00
|
|
|
|
2004-03-12 12:46:26 +01:00
|
|
|
#define ut_error do {\
|
|
|
|
ut_print_timestamp(stderr);\
|
|
|
|
fprintf(stderr, ut_dbg_msg_assert_fail,\
|
|
|
|
os_thread_pf(os_thread_get_curr_id()), __FILE__, (ulint)__LINE__);\
|
|
|
|
fprintf(stderr, ut_dbg_msg_trap);\
|
|
|
|
ut_dbg_stop_threads = TRUE;\
|
|
|
|
if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = NULL;\
|
|
|
|
} while (0)
|
2001-02-17 13:19:19 +01:00
|
|
|
|
|
|
|
#ifdef UNIV_DEBUG
|
2004-03-12 12:46:26 +01:00
|
|
|
# define ut_ad(EXPR) ut_a(EXPR)
|
|
|
|
# define ut_d(EXPR) do {EXPR;} while (0)
|
2001-02-17 13:19:19 +01:00
|
|
|
#else
|
2004-03-12 12:46:26 +01:00
|
|
|
# define ut_ad(EXPR)
|
|
|
|
# define ut_d(EXPR)
|
2001-02-17 13:19:19 +01:00
|
|
|
#endif
|
|
|
|
|
|
|
|
#define UT_NOT_USED(A) A = A
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|