ut0dbg.h
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:2k
源码类别:

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 <assert.h>
  9. #include <stdlib.h>
  10. #include "univ.i"
  11. #include "os0thread.h"
  12. extern ulint ut_dbg_zero; /* This is used to eliminate
  13. compiler warnings */
  14. extern ibool ut_dbg_stop_threads;
  15. extern ulint* ut_dbg_null_ptr;
  16. #define ut_a(EXPR)
  17. {
  18. ulint dbg_i;
  19. if (!((ulint)(EXPR) + ut_dbg_zero)) {
  20.     /* printf(
  21. "Assertion failure in thread %lu in file %s line %lun",
  22. os_thread_get_curr_id(), IB__FILE__, (ulint)__LINE__);
  23.     printf(
  24. "we generate a memory trap on purpose to start the debuggern");*/
  25. ut_dbg_stop_threads = TRUE;
  26. dbg_i = *(ut_dbg_null_ptr);
  27.     if (dbg_i) {
  28. ut_dbg_null_ptr = NULL;
  29. }
  30. }
  31. if (ut_dbg_stop_threads) {
  32.     printf("Thread %lu stopped in file %s line %lun",
  33. os_thread_get_curr_id(), IB__FILE__, (ulint)__LINE__);
  34. os_thread_sleep(1000000000);
  35. }
  36. }
  37. #define ut_error {
  38. ulint dbg_i;
  39.    printf(
  40. "Assertion failure in thread %lu in file %s line %lun",
  41. os_thread_get_curr_id(), IB__FILE__, (ulint)__LINE__);
  42.    printf("Generates memory trap on purpose for stack debuggingn");
  43.    ut_dbg_stop_threads = TRUE;
  44.    dbg_i = *(ut_dbg_null_ptr);
  45.    printf("%lu", dbg_i);
  46. }
  47. #ifdef UNIV_DEBUG
  48. #define ut_ad(EXPR)   ut_a(EXPR)
  49. #define ut_d(EXPR) {EXPR;}
  50. #else
  51. #define ut_ad(EXPR)
  52. #define ut_d(EXPR)
  53. #endif
  54. #define UT_NOT_USED(A) A = A
  55. #endif