lldb-private-log.h revision 269024
1//===-- lldb-private-log.h --------------------------------------*- C++ -*-===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef liblldb_lldb_private_log_h_
11#define liblldb_lldb_private_log_h_
12
13// C Includes
14// C++ Includes
15// Other libraries and framework includes
16// Project includes
17#include "lldb/lldb-private.h"
18
19//----------------------------------------------------------------------
20// Log Bits specific to logging in lldb
21//----------------------------------------------------------------------
22#define LIBLLDB_LOG_VERBOSE             (1u << 0)
23#define LIBLLDB_LOG_PROCESS             (1u << 1)
24#define LIBLLDB_LOG_THREAD              (1u << 2)
25#define LIBLLDB_LOG_DYNAMIC_LOADER      (1u << 3)
26#define LIBLLDB_LOG_EVENTS              (1u << 4)
27#define LIBLLDB_LOG_BREAKPOINTS         (1u << 5)
28#define LIBLLDB_LOG_WATCHPOINTS         (1u << 6)
29#define LIBLLDB_LOG_STEP                (1u << 7)
30#define LIBLLDB_LOG_EXPRESSIONS         (1u << 8)
31#define LIBLLDB_LOG_TEMPORARY           (1u << 9)
32#define LIBLLDB_LOG_STATE               (1u << 10)
33#define LIBLLDB_LOG_OBJECT              (1u << 11)
34#define LIBLLDB_LOG_COMMUNICATION       (1u << 12)
35#define LIBLLDB_LOG_CONNECTION          (1u << 13)
36#define LIBLLDB_LOG_HOST                (1u << 14)
37#define LIBLLDB_LOG_UNWIND              (1u << 15)
38#define LIBLLDB_LOG_API                 (1u << 16)
39#define LIBLLDB_LOG_SCRIPT              (1u << 17)
40#define LIBLLDB_LOG_COMMANDS            (1U << 18)
41#define LIBLLDB_LOG_TYPES               (1u << 19)
42#define LIBLLDB_LOG_SYMBOLS             (1u << 20)
43#define LIBLLDB_LOG_MODULES             (1u << 21)
44#define LIBLLDB_LOG_TARGET              (1u << 22)
45#define LIBLLDB_LOG_MMAP                (1u << 23)
46#define LIBLLDB_LOG_OS                  (1u << 24)
47#define LIBLLDB_LOG_PLATFORM            (1u << 25)
48#define LIBLLDB_LOG_SYSTEM_RUNTIME      (1u << 26)
49#define LIBLLDB_LOG_ALL                 (UINT32_MAX)
50#define LIBLLDB_LOG_DEFAULT             (LIBLLDB_LOG_PROCESS              |\
51                                         LIBLLDB_LOG_THREAD               |\
52                                         LIBLLDB_LOG_DYNAMIC_LOADER       |\
53                                         LIBLLDB_LOG_BREAKPOINTS          |\
54                                         LIBLLDB_LOG_WATCHPOINTS          |\
55                                         LIBLLDB_LOG_STEP                 |\
56                                         LIBLLDB_LOG_STATE                |\
57                                         LIBLLDB_LOG_SYMBOLS              |\
58                                         LIBLLDB_LOG_TARGET               |\
59                                         LIBLLDB_LOG_COMMANDS)
60
61namespace lldb_private {
62
63void
64LogIfAllCategoriesSet (uint32_t mask, const char *format, ...);
65
66void
67LogIfAnyCategoriesSet (uint32_t mask, const char *format, ...);
68
69Log *
70GetLogIfAllCategoriesSet (uint32_t mask);
71
72Log *
73GetLogIfAnyCategoriesSet (uint32_t mask);
74
75uint32_t
76GetLogMask ();
77
78bool
79IsLogVerbose ();
80
81void
82DisableLog (const char **categories, Stream *feedback_strm);
83
84Log *
85EnableLog (lldb::StreamSP &log_stream_sp, uint32_t log_options, const char **categories, Stream *feedback_strm);
86
87void
88ListLogCategories (Stream *strm);
89
90} // namespace lldb_private
91
92#endif  // liblldb_lldb_private_log_h_
93