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(name: "lldb" , channel&: g_log_channel); |
83 | } |
84 | |