ReactOS 0.4.16-dev-2646-g1219156
debug.h
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS ATA Bus Driver
3 * LICENSE: MIT (https://spdx.org/licenses/MIT)
4 * PURPOSE: Debug support header file
5 * COPYRIGHT: Copyright 2026 Dmitry Borisov <di.sean@protonmail.com>
6 */
7
8#pragma once
9
10#ifndef __RELFILE__
11#define __RELFILE__ __FILE__
12#endif
13
14#if DBG
15
16// #define DEBUG_TRACE
17// #define DEBUG_INFO
18#define DEBUG_WARN
19#define DEBUG_ERR
20
21#ifdef DEBUG_TRACE
22#define TRACE(fmt, ...) \
23 do { \
24 if (DbgPrint("(%s:%d) %s " fmt, __RELFILE__, __LINE__, __FUNCTION__, ##__VA_ARGS__)) \
25 DbgPrint("(%s:%d) DbgPrint() failed!\n", __RELFILE__, __LINE__); \
26 } while (0)
27
28#else
29#if defined(_MSC_VER)
30#define TRACE __noop
31#else
32#define TRACE(...) do { if(0) { DbgPrint(__VA_ARGS__); } } while(0)
33#endif
34#endif
35
36#ifdef DEBUG_INFO
37#define INFO(fmt, ...) \
38 do { \
39 if (DbgPrint("(%s:%d) %s " fmt, __RELFILE__, __LINE__, __FUNCTION__, ##__VA_ARGS__)) \
40 DbgPrint("(%s:%d) DbgPrint() failed!\n", __RELFILE__, __LINE__); \
41 } while (0)
42
43#else
44#if defined(_MSC_VER)
45#define INFO __noop
46#else
47#define INFO(...) do { if(0) { DbgPrint(__VA_ARGS__); } } while(0)
48#endif
49#endif
50
51#ifdef DEBUG_WARN
52#define WARN(fmt, ...) \
53 do { \
54 if (DbgPrint("(%s:%d) %s " fmt, __RELFILE__, __LINE__, __FUNCTION__, ##__VA_ARGS__)) \
55 DbgPrint("(%s:%d) DbgPrint() failed!\n", __RELFILE__, __LINE__); \
56 } while (0)
57
58#else
59#if defined(_MSC_VER)
60#define WARN __noop
61#else
62#define WARN(...) do { if(0) { DbgPrint(__VA_ARGS__); } } while(0)
63#endif
64#endif
65
66#ifdef DEBUG_ERR
67#define ERR(fmt, ...) \
68 do { \
69 if (DbgPrint("(%s:%d) %s " fmt, __RELFILE__, __LINE__, __FUNCTION__, ##__VA_ARGS__)) \
70 DbgPrint("(%s:%d) DbgPrint() failed!\n", __RELFILE__, __LINE__); \
71 } while (0)
72
73#else
74#if defined(_MSC_VER)
75#define ERR __noop
76#else
77#define ERR(...) do { if(0) { DbgPrint(__VA_ARGS__); } } while(0)
78#endif
79#endif
80
81#else
82
83#if defined(_MSC_VER)
84#define TRACE __noop
85#define INFO __noop
86#define WARN __noop
87#define ERR __noop
88#else
89#define TRACE(...) do { if(0) { DbgPrint(__VA_ARGS__); } } while(0)
90#define INFO(...) do { if(0) { DbgPrint(__VA_ARGS__); } } while(0)
91#define WARN(...) do { if(0) { DbgPrint(__VA_ARGS__); } } while(0)
92#define ERR(...) do { if(0) { DbgPrint(__VA_ARGS__); } } while(0)
93#endif
94
95#endif