xref: /reactos/ntoskrnl/kdbg/debug.h (revision 5140a990)
1 /*
2  * PROJECT:     ReactOS KDBG Kernel Debugger
3  * LICENSE:     GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
4  * PURPOSE:     Useful debugging macros
5  * COPYRIGHT:   Copyright 2023 Hermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
6  */
7 
8 /*
9  * NOTE: Define NDEBUG before including this header
10  * to disable debugging macros.
11  */
12 
13 #pragma once
14 
15 #ifndef __RELFILE__
16 #define __RELFILE__ __FILE__
17 #endif
18 
19 /* Print stuff only on Debug Builds */
20 #if DBG
21 
22     /* These are always printed */
23     #define DPRINT1(fmt, ...)   \
24         KdbPrintf("(%s:%d) " fmt, __RELFILE__, __LINE__, ##__VA_ARGS__)
25 
26     /* These are printed only if NDEBUG is NOT defined */
27     #ifndef NDEBUG
28         #define DPRINT(fmt, ...) \
29             KdbPrintf("(%s:%d) " fmt, __RELFILE__, __LINE__, ##__VA_ARGS__)
30     #else
31 #if defined(_MSC_VER)
32         #define DPRINT  __noop
33 #else
34         #define DPRINT(...) do { if(0) { KdbPrintf(__VA_ARGS__); } } while(0)
35 #endif
36     #endif
37 
38 #else /* not DBG */
39 
40     /* On non-debug builds, we never show these */
41 #if defined(_MSC_VER)
42     #define DPRINT1 __noop
43     #define DPRINT  __noop
44 #else
45     #define DPRINT1(...) do { if(0) { KdbPrintf(__VA_ARGS__); } } while(0)
46     #define DPRINT(...) do { if(0) { KdbPrintf(__VA_ARGS__); } } while(0)
47 #endif /* _MSC_VER */
48 
49 #endif /* not DBG */
50 
51 /* EOF */
52