1 //===-- ProcessWindowsLog.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 liblldb_ProcessWindowsLog_h_ 10 #define liblldb_ProcessWindowsLog_h_ 11 12 #include "lldb/Utility/Log.h" 13 14 namespace lldb_private { 15 16 enum class WindowsLog : Log::MaskType { 17 Breakpoints = Log::ChannelFlag<0>, // Log breakpoint operations 18 Event = Log::ChannelFlag<1>, // Low level debug events 19 Exception = Log::ChannelFlag<2>, // Log exceptions 20 Memory = Log::ChannelFlag<3>, // Log memory reads/writes calls 21 Process = Log::ChannelFlag<4>, // Log process operations 22 Registers = Log::ChannelFlag<5>, // Log register operations 23 Step = Log::ChannelFlag<6>, // Log step operations 24 Thread = Log::ChannelFlag<7>, // Log thread operations 25 LLVM_MARK_AS_BITMASK_ENUM(Thread) 26 }; 27 28 #define WINDOWS_LOG_PROCESS ::lldb_private::WindowsLog::Process 29 #define WINDOWS_LOG_EXCEPTION ::lldb_private::WindowsLog::Exception 30 #define WINDOWS_LOG_THREAD ::lldb_private::WindowsLog::Thread 31 #define WINDOWS_LOG_MEMORY ::lldb_private::WindowsLog::Memory 32 #define WINDOWS_LOG_BREAKPOINTS ::lldb_private::WindowsLog::Breakpoints 33 #define WINDOWS_LOG_STEP ::lldb_private::WindowsLog::Step 34 #define WINDOWS_LOG_REGISTERS ::lldb_private::WindowsLog::Registers 35 #define WINDOWS_LOG_EVENT ::lldb_private::WindowsLog::Event 36 37 class ProcessWindowsLog { 38 public: 39 static void Initialize(); 40 static void Terminate(); 41 42 static Log *GetLogIfAny(WindowsLog mask) { return GetLog(mask); } 43 }; 44 45 template <> Log::Channel &LogChannelFor<WindowsLog>(); 46 } 47 48 #endif // liblldb_ProcessWindowsLog_h_ 49