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