ut0dbg.h
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:3k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /*********************************************************************
  2. Debug utilities for Innobase
  3. (c) 1994, 1995 Innobase Oy
  4. Created 1/30/1994 Heikki Tuuri
  5. **********************************************************************/
  6. #ifndef ut0dbg_h
  7. #define ut0dbg_h
  8. #include "univ.i"
  9. #include <stdlib.h>
  10. #include "os0thread.h"
  11. extern ulint ut_dbg_zero; /* This is used to eliminate
  12. compiler warnings */
  13. extern ibool ut_dbg_stop_threads;
  14. extern ulint* ut_dbg_null_ptr;
  15. extern const char* ut_dbg_msg_assert_fail;
  16. extern const char* ut_dbg_msg_trap;
  17. extern const char* ut_dbg_msg_stop;
  18. /* Have a graceful exit on NetWare rather than a segfault to avoid abends */
  19. #ifdef __NETWARE__
  20. extern ibool  panic_shutdown;
  21. #define ut_a(EXPR) do {
  22. if (!((ulint)(EXPR) + ut_dbg_zero)) {
  23.                 ut_print_timestamp(stderr);
  24.     fprintf(stderr, ut_dbg_msg_assert_fail,
  25. os_thread_pf(os_thread_get_curr_id()), __FILE__,
  26.                 (ulint)__LINE__);
  27. fputs("InnoDB: Failing assertion: " #EXPR "n", stderr);
  28. fputs(ut_dbg_msg_trap, stderr);
  29. ut_dbg_stop_threads = TRUE;
  30. if (ut_dbg_stop_threads) {
  31.          fprintf(stderr, ut_dbg_msg_stop,
  32.     os_thread_pf(os_thread_get_curr_id()), __FILE__, (ulint)__LINE__);
  33.      }
  34. if(!panic_shutdown){
  35. panic_shutdown = TRUE;
  36. innobase_shutdown_for_mysql();}
  37. exit(1);
  38. }
  39. } while (0)
  40. #define ut_error do {
  41. ut_print_timestamp(stderr);
  42. fprintf(stderr, ut_dbg_msg_assert_fail,
  43. os_thread_pf(os_thread_get_curr_id()), __FILE__, (ulint)__LINE__);
  44. fprintf(stderr, ut_dbg_msg_trap);
  45. ut_dbg_stop_threads = TRUE;
  46. if(!panic_shutdown){panic_shutdown = TRUE;
  47. innobase_shutdown_for_mysql();}
  48. } while (0)
  49. #else
  50. #define ut_a(EXPR) do {
  51. if (!((ulint)(EXPR) + ut_dbg_zero)) {
  52.                 ut_print_timestamp(stderr);
  53.     fprintf(stderr, ut_dbg_msg_assert_fail,
  54. os_thread_pf(os_thread_get_curr_id()), __FILE__,
  55.                 (ulint)__LINE__);
  56. fputs("InnoDB: Failing assertion: " #EXPR "n", stderr);
  57. fputs(ut_dbg_msg_trap, stderr);
  58. ut_dbg_stop_threads = TRUE;
  59. if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = NULL;
  60. }
  61. if (ut_dbg_stop_threads) {
  62.         fprintf(stderr, ut_dbg_msg_stop,
  63.      os_thread_pf(os_thread_get_curr_id()), __FILE__, (ulint)__LINE__);
  64. os_thread_sleep(1000000000);
  65. }
  66. } while (0)
  67. #define ut_error do {
  68.         ut_print_timestamp(stderr);
  69. fprintf(stderr, ut_dbg_msg_assert_fail,
  70. os_thread_pf(os_thread_get_curr_id()), __FILE__, (ulint)__LINE__);
  71. fprintf(stderr, ut_dbg_msg_trap);
  72. ut_dbg_stop_threads = TRUE;
  73. if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = NULL;
  74. } while (0)
  75. #endif
  76. #ifdef UNIV_DEBUG
  77. #define ut_ad(EXPR)   ut_a(EXPR)
  78. #define ut_d(EXPR) do {EXPR;} while (0)
  79. #else
  80. #define ut_ad(EXPR)
  81. #define ut_d(EXPR)
  82. #endif
  83. #define UT_NOT_USED(A) A = A
  84. #endif