1 //===-- LLDBLog.cpp -------------------------------------------------------===//
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 #include "lldb/Utility/LLDBLog.h"
10 #include "lldb/Utility/Log.h"
11 #include "llvm/ADT/ArrayRef.h"
12 #include <cstdarg>
13 
14 using namespace lldb_private;
15 
16 static constexpr Log::Category g_categories[] = {
17     {{"api"}, {"log API calls and return values"}, LLDBLog::API},
18     {{"ast"}, {"log AST"}, LLDBLog::AST},
19     {{"break"}, {"log breakpoints"}, LLDBLog::Breakpoints},
20     {{"commands"}, {"log command argument parsing"}, LLDBLog::Commands},
21     {{"comm"}, {"log communication activities"}, LLDBLog::Communication},
22     {{"conn"}, {"log connection details"}, LLDBLog::Connection},
23     {{"demangle"},
24      {"log mangled names to catch demangler crashes"},
25      LLDBLog::Demangle},
26     {{"dyld"},
27      {"log shared library related activities"},
28      LLDBLog::DynamicLoader},
29     {{"event"},
30      {"log broadcaster, listener and event queue activities"},
31      LLDBLog::Events},
32     {{"expr"}, {"log expressions"}, LLDBLog::Expressions},
33     {{"formatters"},
34      {"log data formatters related activities"},
35      LLDBLog::DataFormatters},
36     {{"host"}, {"log host activities"}, LLDBLog::Host},
37     {{"jit"}, {"log JIT events in the target"}, LLDBLog::JITLoader},
38     {{"language"}, {"log language runtime events"}, LLDBLog::Language},
39     {{"mmap"}, {"log mmap related activities"}, LLDBLog::MMap},
40     {{"module"},
41      {"log module activities such as when modules are created, destroyed, "
42       "replaced, and more"},
43      LLDBLog::Modules},
44     {{"object"},
45      {"log object construction/destruction for important objects"},
46      LLDBLog::Object},
47     {{"os"}, {"log OperatingSystem plugin related activities"}, LLDBLog::OS},
48     {{"platform"}, {"log platform events and activities"}, LLDBLog::Platform},
49     {{"process"}, {"log process events and activities"}, LLDBLog::Process},
50     {{"script"}, {"log events about the script interpreter"}, LLDBLog::Script},
51     {{"state"},
52      {"log private and public process state changes"},
53      LLDBLog::State},
54     {{"step"}, {"log step related activities"}, LLDBLog::Step},
55     {{"symbol"}, {"log symbol related issues and warnings"}, LLDBLog::Symbols},
56     {{"system-runtime"}, {"log system runtime events"}, LLDBLog::SystemRuntime},
57     {{"target"}, {"log target events and activities"}, LLDBLog::Target},
58     {{"temp"}, {"log internal temporary debug messages"}, LLDBLog::Temporary},
59     {{"thread"}, {"log thread events and activities"}, LLDBLog::Thread},
60     {{"types"}, {"log type system related activities"}, LLDBLog::Types},
61     {{"unwind"}, {"log stack unwind activities"}, LLDBLog::Unwind},
62     {{"watch"}, {"log watchpoint related activities"}, LLDBLog::Watchpoints},
63     {{"on-demand"},
64      {"log symbol on-demand related activities"},
65      LLDBLog::OnDemand},
66     {{"source"}, {"log source related activities"}, LLDBLog::Source},
67 };
68 
69 static Log::Channel g_log_channel(g_categories,
70                                   LLDBLog::Process | LLDBLog::Thread |
71                                       LLDBLog::DynamicLoader |
72                                       LLDBLog::Breakpoints |
73                                       LLDBLog::Watchpoints | LLDBLog::Step |
74                                       LLDBLog::State | LLDBLog::Symbols |
75                                       LLDBLog::Target | LLDBLog::Commands);
76 
77 template <> Log::Channel &lldb_private::LogChannelFor<LLDBLog>() {
78   return g_log_channel;
79 }
80 
81 void lldb_private::InitializeLldbChannel() {
82   Log::Register("lldb", g_log_channel);
83 }
84