1//===-- Logging.h -----------------------------------------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLDB_UTILITY_LOGGING_H
10#define LLDB_UTILITY_LOGGING_H
11
12#include <cstdint>
13
14// Log Bits specific to logging in lldb
15#define LIBLLDB_LOG_PROCESS (1u << 1)
16#define LIBLLDB_LOG_THREAD (1u << 2)
17#define LIBLLDB_LOG_DYNAMIC_LOADER (1u << 3)
18#define LIBLLDB_LOG_EVENTS (1u << 4)
19#define LIBLLDB_LOG_BREAKPOINTS (1u << 5)
20#define LIBLLDB_LOG_WATCHPOINTS (1u << 6)
21#define LIBLLDB_LOG_STEP (1u << 7)
22#define LIBLLDB_LOG_EXPRESSIONS (1u << 8)
23#define LIBLLDB_LOG_TEMPORARY (1u << 9)
24#define LIBLLDB_LOG_STATE (1u << 10)
25#define LIBLLDB_LOG_OBJECT (1u << 11)
26#define LIBLLDB_LOG_COMMUNICATION (1u << 12)
27#define LIBLLDB_LOG_CONNECTION (1u << 13)
28#define LIBLLDB_LOG_HOST (1u << 14)
29#define LIBLLDB_LOG_UNWIND (1u << 15)
30#define LIBLLDB_LOG_API (1u << 16)
31#define LIBLLDB_LOG_SCRIPT (1u << 17)
32#define LIBLLDB_LOG_COMMANDS (1U << 18)
33#define LIBLLDB_LOG_TYPES (1u << 19)
34#define LIBLLDB_LOG_SYMBOLS (1u << 20)
35#define LIBLLDB_LOG_MODULES (1u << 21)
36#define LIBLLDB_LOG_TARGET (1u << 22)
37#define LIBLLDB_LOG_MMAP (1u << 23)
38#define LIBLLDB_LOG_OS (1u << 24)
39#define LIBLLDB_LOG_PLATFORM (1u << 25)
40#define LIBLLDB_LOG_SYSTEM_RUNTIME (1u << 26)
41#define LIBLLDB_LOG_JIT_LOADER (1u << 27)
42#define LIBLLDB_LOG_LANGUAGE (1u << 28)
43#define LIBLLDB_LOG_DATAFORMATTERS (1u << 29)
44#define LIBLLDB_LOG_DEMANGLE (1u << 30)
45#define LIBLLDB_LOG_AST (1u << 31)
46#define LIBLLDB_LOG_ALL (UINT32_MAX)
47#define LIBLLDB_LOG_DEFAULT                                                    \
48  (LIBLLDB_LOG_PROCESS | LIBLLDB_LOG_THREAD | LIBLLDB_LOG_DYNAMIC_LOADER |     \
49   LIBLLDB_LOG_BREAKPOINTS | LIBLLDB_LOG_WATCHPOINTS | LIBLLDB_LOG_STEP |      \
50   LIBLLDB_LOG_STATE | LIBLLDB_LOG_SYMBOLS | LIBLLDB_LOG_TARGET |              \
51   LIBLLDB_LOG_COMMANDS)
52
53namespace lldb_private {
54
55class Log;
56
57Log *GetLogIfAllCategoriesSet(uint32_t mask);
58
59Log *GetLogIfAnyCategoriesSet(uint32_t mask);
60
61void InitializeLldbChannel();
62
63} // namespace lldb_private
64
65#endif // LLDB_UTILITY_LOGGING_H
66