diff --git a/lldb/include/lldb/Core/Debugger.h b/lldb/include/lldb/Core/Debugger.h index cafb89c77806..02df798e7b33 100644 --- a/lldb/include/lldb/Core/Debugger.h +++ b/lldb/include/lldb/Core/Debugger.h @@ -247,7 +247,7 @@ public: }; static lldb::UserSettingsControllerSP & - GetSettingsController (bool finish = false); + GetSettingsController (); static lldb::DebuggerSP CreateInstance (); diff --git a/lldb/include/lldb/Core/Log.h b/lldb/include/lldb/Core/Log.h index bc96842d5afe..7c300400ccc3 100644 --- a/lldb/include/lldb/Core/Log.h +++ b/lldb/include/lldb/Core/Log.h @@ -100,6 +100,12 @@ public: static void ListAllLogChannels (Stream *strm); + static void + Initialize (); + + static void + Terminate (); + //------------------------------------------------------------------ // Member functions //------------------------------------------------------------------ diff --git a/lldb/include/lldb/Target/Process.h b/lldb/include/lldb/Target/Process.h index 5b3b56b798d6..d318ca1f651c 100644 --- a/lldb/include/lldb/Target/Process.h +++ b/lldb/include/lldb/Target/Process.h @@ -393,8 +393,14 @@ public: #endif - static lldb::UserSettingsControllerSP - GetSettingsController (bool finish = false); + static void + Initialize (); + + static void + Terminate (); + + static lldb::UserSettingsControllerSP & + GetSettingsController (); void UpdateInstanceName (); diff --git a/lldb/include/lldb/Target/Target.h b/lldb/include/lldb/Target/Target.h index debdd84853d8..acc9cfeba256 100644 --- a/lldb/include/lldb/Target/Target.h +++ b/lldb/include/lldb/Target/Target.h @@ -123,8 +123,14 @@ public: DISALLOW_COPY_AND_ASSIGN (SettingsController); }; - static lldb::UserSettingsControllerSP - GetSettingsController (bool finish = false); + static void + Initialize (); + + static void + Terminate (); + + static lldb::UserSettingsControllerSP & + GetSettingsController (); static ArchSpec GetDefaultArchitecture (); diff --git a/lldb/include/lldb/Target/Thread.h b/lldb/include/lldb/Target/Thread.h index e8042bc41109..038ba4de0623 100644 --- a/lldb/include/lldb/Target/Thread.h +++ b/lldb/include/lldb/Target/Thread.h @@ -92,14 +92,14 @@ class Thread : { public: - class ThreadSettingsController : public UserSettingsController + class SettingsController : public UserSettingsController { public: - ThreadSettingsController (); + SettingsController (); virtual - ~ThreadSettingsController (); + ~SettingsController (); static SettingEntry global_settings_table[]; static SettingEntry instance_settings_table[]; @@ -113,7 +113,7 @@ public: // Class-wide settings. - DISALLOW_COPY_AND_ASSIGN (ThreadSettingsController); + DISALLOW_COPY_AND_ASSIGN (SettingsController); }; class RegisterCheckpoint @@ -168,8 +168,14 @@ public: void UpdateInstanceName (); - static lldb::UserSettingsControllerSP - GetSettingsController (bool finish = false); + static void + Initialize (); + + static void + Terminate (); + + static lldb::UserSettingsControllerSP & + GetSettingsController (); Thread (Process &process, lldb::tid_t tid); virtual ~Thread(); diff --git a/lldb/lldb.xcodeproj/project.pbxproj b/lldb/lldb.xcodeproj/project.pbxproj index 605870198957..2c13f0ca3028 100644 --- a/lldb/lldb.xcodeproj/project.pbxproj +++ b/lldb/lldb.xcodeproj/project.pbxproj @@ -2452,6 +2452,7 @@ isa = PBXProject; buildConfigurationList = 1DEB91EF08733DB70010E9CD /* Build configuration list for PBXProject "lldb" */; compatibilityVersion = "Xcode 3.1"; + developmentRegion = English; hasScannedForEncodings = 1; knownRegions = ( en, diff --git a/lldb/source/Core/Debugger.cpp b/lldb/source/Core/Debugger.cpp index 5e6f93c91d45..2353b922e420 100644 --- a/lldb/source/Core/Debugger.cpp +++ b/lldb/source/Core/Debugger.cpp @@ -52,12 +52,27 @@ GetDebuggerList() #pragma mark Debugger +UserSettingsControllerSP & +Debugger::GetSettingsController () +{ + static UserSettingsControllerSP g_settings_controller; + return g_settings_controller; +} + void Debugger::Initialize () { if (g_shared_debugger_refcount == 0) + { lldb_private::Initialize(); + UserSettingsControllerSP &usc = GetSettingsController(); + usc.reset (new SettingsController); + UserSettingsController::InitializeSettingsController (usc, + SettingsController::global_settings_table, + SettingsController::instance_settings_table); + } g_shared_debugger_refcount++; + } void @@ -68,10 +83,16 @@ Debugger::Terminate () g_shared_debugger_refcount--; if (g_shared_debugger_refcount == 0) { + UserSettingsControllerSP &usc = GetSettingsController(); + UserSettingsController::FinalizeSettingsController (usc); + usc.reset(); lldb_private::WillTerminate(); lldb_private::Terminate(); } } + // Clear our master list of debugger objects + Mutex::Locker locker (GetDebuggerListMutex ()); + GetDebuggerList().clear(); } DebuggerSP @@ -144,7 +165,7 @@ Debugger::FindTargetWithProcessID (lldb::pid_t pid) Debugger::Debugger () : UserID (g_unique_id++), - DebuggerInstanceSettings (*(Debugger::GetSettingsController().get())), + DebuggerInstanceSettings (*Debugger::GetSettingsController()), m_input_comm("debugger.input"), m_input_file (), m_output_file (), @@ -536,29 +557,6 @@ Debugger::FindDebuggerWithID (lldb::user_id_t id) return debugger_sp; } -lldb::UserSettingsControllerSP & -Debugger::GetSettingsController (bool finish) -{ - static lldb::UserSettingsControllerSP g_settings_controller (new SettingsController); - static bool initialized = false; - - if (!initialized) - { - initialized = UserSettingsController::InitializeSettingsController (g_settings_controller, - Debugger::SettingsController::global_settings_table, - Debugger::SettingsController::instance_settings_table); - } - - if (finish) - { - UserSettingsControllerSP parent = g_settings_controller->GetParent(); - if (parent) - parent->RemoveChild (g_settings_controller); - g_settings_controller.reset(); - } - return g_settings_controller; -} - static void TestPromptFormats (StackFrame *frame) { @@ -1261,7 +1259,7 @@ Debugger::SettingsController::~SettingsController () lldb::InstanceSettingsSP Debugger::SettingsController::CreateInstanceSettings (const char *instance_name) { - DebuggerInstanceSettings *new_settings = new DebuggerInstanceSettings (*(Debugger::GetSettingsController().get()), + DebuggerInstanceSettings *new_settings = new DebuggerInstanceSettings (*Debugger::GetSettingsController(), false, instance_name); lldb::InstanceSettingsSP new_settings_sp (new_settings); return new_settings_sp; @@ -1306,7 +1304,7 @@ DebuggerInstanceSettings::DebuggerInstanceSettings } DebuggerInstanceSettings::DebuggerInstanceSettings (const DebuggerInstanceSettings &rhs) : - InstanceSettings (*(Debugger::GetSettingsController().get()), CreateInstanceName ().AsCString()), + InstanceSettings (*Debugger::GetSettingsController(), CreateInstanceName ().AsCString()), m_prompt (rhs.m_prompt), m_frame_format (rhs.m_frame_format), m_thread_format (rhs.m_thread_format), diff --git a/lldb/source/Core/Log.cpp b/lldb/source/Core/Log.cpp index 2b7b7175e4db..eaa8c7593286 100644 --- a/lldb/source/Core/Log.cpp +++ b/lldb/source/Core/Log.cpp @@ -389,7 +389,7 @@ Log::DisableAllLogChannels (Stream *feedback_strm) { CallbackMap &callback_map = GetCallbackMap (); CallbackMapIter pos, end = callback_map.end(); - Args args ("all"); + Args args; for (pos = callback_map.begin(); pos != end; ++pos) pos->second.disable (args, feedback_strm); @@ -400,6 +400,19 @@ Log::DisableAllLogChannels (Stream *feedback_strm) channel_pos->second->Disable (args, feedback_strm); } +void +Log::Initialize() +{ + Log::Callbacks log_callbacks = { DisableLog, EnableLog, ListLogCategories }; + Log::RegisterLogChannel ("lldb", log_callbacks); +} + +void +Log::Terminate () +{ + DisableAllLogChannels (NULL); +} + void Log::ListAllLogChannels (Stream *strm) { diff --git a/lldb/source/Plugins/Process/MacOSX-User/source/ProcessMacOSXLog.cpp b/lldb/source/Plugins/Process/MacOSX-User/source/ProcessMacOSXLog.cpp index 986989f690ae..56db421dff0c 100644 --- a/lldb/source/Plugins/Process/MacOSX-User/source/ProcessMacOSXLog.cpp +++ b/lldb/source/Plugins/Process/MacOSX-User/source/ProcessMacOSXLog.cpp @@ -48,29 +48,33 @@ ProcessMacOSXLog::DisableLog (Args &args, Stream *feedback_strm) LogSP log (GetLog ()); if (log) { - uint32_t flag_bits = log->GetMask().Get(); + uint32_t flag_bits = 0; const size_t argc = args.GetArgumentCount (); - for (size_t i = 0; i < argc; ++i) + if (argc > 0) { - const char *arg = args.GetArgumentAtIndex (i); - - if (::strcasecmp (arg, "all") == 0 ) flag_bits &= ~PD_LOG_ALL; - else if (::strcasestr (arg, "break") == arg ) flag_bits &= ~PD_LOG_BREAKPOINTS; - else if (::strcasecmp (arg, "default") == 0 ) flag_bits &= ~PD_LOG_DEFAULT; - else if (::strcasestr (arg, "exc") == arg ) flag_bits &= ~PD_LOG_EXCEPTIONS; - else if (::strcasecmp (arg, "memory") == 0 ) flag_bits &= ~PD_LOG_MEMORY; - else if (::strcasecmp (arg, "data-short") == 0 ) flag_bits &= ~PD_LOG_MEMORY_DATA_SHORT; - else if (::strcasecmp (arg, "data-long") == 0 ) flag_bits &= ~PD_LOG_MEMORY_DATA_LONG; - else if (::strcasecmp (arg, "protections")== 0 ) flag_bits &= ~PD_LOG_PROCESS; - else if (::strcasecmp (arg, "step") == 0 ) flag_bits &= ~PD_LOG_STEP; - else if (::strcasecmp (arg, "task") == 0 ) flag_bits &= ~PD_LOG_TASK; - else if (::strcasecmp (arg, "thread") == 0 ) flag_bits &= ~PD_LOG_THREAD; - else if (::strcasecmp (arg, "verbose") == 0 ) flag_bits &= ~PD_LOG_VERBOSE; - else if (::strcasestr (arg, "watch") == arg ) flag_bits &= ~PD_LOG_WATCHPOINTS; - else + flag_bits = log->GetMask().Get(); + for (size_t i = 0; i < argc; ++i) { - feedback_strm->Printf("error: unrecognized log category '%s'\n", arg); - ListLogCategories (feedback_strm); + const char *arg = args.GetArgumentAtIndex (i); + + if (::strcasecmp (arg, "all") == 0 ) flag_bits &= ~PD_LOG_ALL; + else if (::strcasestr (arg, "break") == arg ) flag_bits &= ~PD_LOG_BREAKPOINTS; + else if (::strcasecmp (arg, "default") == 0 ) flag_bits &= ~PD_LOG_DEFAULT; + else if (::strcasestr (arg, "exc") == arg ) flag_bits &= ~PD_LOG_EXCEPTIONS; + else if (::strcasecmp (arg, "memory") == 0 ) flag_bits &= ~PD_LOG_MEMORY; + else if (::strcasecmp (arg, "data-short") == 0 ) flag_bits &= ~PD_LOG_MEMORY_DATA_SHORT; + else if (::strcasecmp (arg, "data-long") == 0 ) flag_bits &= ~PD_LOG_MEMORY_DATA_LONG; + else if (::strcasecmp (arg, "protections")== 0 ) flag_bits &= ~PD_LOG_PROCESS; + else if (::strcasecmp (arg, "step") == 0 ) flag_bits &= ~PD_LOG_STEP; + else if (::strcasecmp (arg, "task") == 0 ) flag_bits &= ~PD_LOG_TASK; + else if (::strcasecmp (arg, "thread") == 0 ) flag_bits &= ~PD_LOG_THREAD; + else if (::strcasecmp (arg, "verbose") == 0 ) flag_bits &= ~PD_LOG_VERBOSE; + else if (::strcasestr (arg, "watch") == arg ) flag_bits &= ~PD_LOG_WATCHPOINTS; + else + { + feedback_strm->Printf("error: unrecognized log category '%s'\n", arg); + ListLogCategories (feedback_strm); + } } } if (flag_bits == 0) diff --git a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemoteLog.cpp b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemoteLog.cpp index 963a468b432f..f07b11d3f997 100644 --- a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemoteLog.cpp +++ b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemoteLog.cpp @@ -48,33 +48,38 @@ ProcessGDBRemoteLog::DisableLog (Args &args, Stream *feedback_strm) LogSP log (GetLog ()); if (log) { - uint32_t flag_bits = log->GetMask().Get(); + uint32_t flag_bits = 0; + const size_t argc = args.GetArgumentCount (); - for (size_t i = 0; i < argc; ++i) + if (argc > 0) { - const char *arg = args.GetArgumentAtIndex (i); - - - if (::strcasecmp (arg, "all") == 0 ) flag_bits &= ~GDBR_LOG_ALL; - else if (::strcasecmp (arg, "async") == 0 ) flag_bits &= ~GDBR_LOG_ASYNC; - else if (::strcasestr (arg, "break") == arg ) flag_bits &= ~GDBR_LOG_BREAKPOINTS; - else if (::strcasestr (arg, "comm") == arg ) flag_bits &= ~GDBR_LOG_COMM; - else if (::strcasecmp (arg, "default") == 0 ) flag_bits &= ~GDBR_LOG_DEFAULT; - else if (::strcasecmp (arg, "packets") == 0 ) flag_bits &= ~GDBR_LOG_PACKETS; - else if (::strcasecmp (arg, "memory") == 0 ) flag_bits &= ~GDBR_LOG_MEMORY; - else if (::strcasecmp (arg, "data-short") == 0 ) flag_bits &= ~GDBR_LOG_MEMORY_DATA_SHORT; - else if (::strcasecmp (arg, "data-long") == 0 ) flag_bits &= ~GDBR_LOG_MEMORY_DATA_LONG; - else if (::strcasecmp (arg, "process") == 0 ) flag_bits &= ~GDBR_LOG_PROCESS; - else if (::strcasecmp (arg, "step") == 0 ) flag_bits &= ~GDBR_LOG_STEP; - else if (::strcasecmp (arg, "thread") == 0 ) flag_bits &= ~GDBR_LOG_THREAD; - else if (::strcasecmp (arg, "verbose") == 0 ) flag_bits &= ~GDBR_LOG_VERBOSE; - else if (::strcasestr (arg, "watch") == arg ) flag_bits &= ~GDBR_LOG_WATCHPOINTS; - else + flag_bits = log->GetMask().Get(); + for (size_t i = 0; i < argc; ++i) { - feedback_strm->Printf("error: unrecognized log category '%s'\n", arg); - ListLogCategories (feedback_strm); + const char *arg = args.GetArgumentAtIndex (i); + + + if (::strcasecmp (arg, "all") == 0 ) flag_bits &= ~GDBR_LOG_ALL; + else if (::strcasecmp (arg, "async") == 0 ) flag_bits &= ~GDBR_LOG_ASYNC; + else if (::strcasestr (arg, "break") == arg ) flag_bits &= ~GDBR_LOG_BREAKPOINTS; + else if (::strcasestr (arg, "comm") == arg ) flag_bits &= ~GDBR_LOG_COMM; + else if (::strcasecmp (arg, "default") == 0 ) flag_bits &= ~GDBR_LOG_DEFAULT; + else if (::strcasecmp (arg, "packets") == 0 ) flag_bits &= ~GDBR_LOG_PACKETS; + else if (::strcasecmp (arg, "memory") == 0 ) flag_bits &= ~GDBR_LOG_MEMORY; + else if (::strcasecmp (arg, "data-short") == 0 ) flag_bits &= ~GDBR_LOG_MEMORY_DATA_SHORT; + else if (::strcasecmp (arg, "data-long") == 0 ) flag_bits &= ~GDBR_LOG_MEMORY_DATA_LONG; + else if (::strcasecmp (arg, "process") == 0 ) flag_bits &= ~GDBR_LOG_PROCESS; + else if (::strcasecmp (arg, "step") == 0 ) flag_bits &= ~GDBR_LOG_STEP; + else if (::strcasecmp (arg, "thread") == 0 ) flag_bits &= ~GDBR_LOG_THREAD; + else if (::strcasecmp (arg, "verbose") == 0 ) flag_bits &= ~GDBR_LOG_VERBOSE; + else if (::strcasestr (arg, "watch") == arg ) flag_bits &= ~GDBR_LOG_WATCHPOINTS; + else + { + feedback_strm->Printf("error: unrecognized log category '%s'\n", arg); + ListLogCategories (feedback_strm); + } + } - } if (flag_bits == 0) diff --git a/lldb/source/Target/Process.cpp b/lldb/source/Target/Process.cpp index a86a4e101877..0a758f6d5e28 100644 --- a/lldb/source/Target/Process.cpp +++ b/lldb/source/Target/Process.cpp @@ -2237,26 +2237,29 @@ Process::PopProcessInputReader () m_target.GetDebugger().PopInputReader (m_process_input_reader); } -lldb::UserSettingsControllerSP -Process::GetSettingsController (bool finish) + +void +Process::Initialize () { - static UserSettingsControllerSP g_settings_controller (new SettingsController); - static bool initialized = false; + UserSettingsControllerSP &usc = GetSettingsController(); + usc.reset (new SettingsController); + UserSettingsController::InitializeSettingsController (usc, + SettingsController::global_settings_table, + SettingsController::instance_settings_table); +} - if (!initialized) - { - initialized = UserSettingsController::InitializeSettingsController (g_settings_controller, - Process::SettingsController::global_settings_table, - Process::SettingsController::instance_settings_table); - } - - if (finish) - { - UserSettingsController::FinalizeSettingsController (g_settings_controller); - g_settings_controller.reset(); - initialized = false; - } +void +Process::Terminate () +{ + UserSettingsControllerSP &usc = GetSettingsController(); + UserSettingsController::FinalizeSettingsController (usc); + usc.reset(); +} +UserSettingsControllerSP & +Process::GetSettingsController () +{ + static UserSettingsControllerSP g_settings_controller; return g_settings_controller; } diff --git a/lldb/source/Target/Target.cpp b/lldb/source/Target/Target.cpp index 5464b2973926..da42e47c08d9 100644 --- a/lldb/source/Target/Target.cpp +++ b/lldb/source/Target/Target.cpp @@ -769,26 +769,28 @@ Target::GetScratchClangASTContext() return m_scratch_ast_context_ap.get(); } -lldb::UserSettingsControllerSP -Target::GetSettingsController (bool finish) +void +Target::Initialize () { - static lldb::UserSettingsControllerSP g_settings_controller (new SettingsController); - static bool initialized = false; + UserSettingsControllerSP &usc = GetSettingsController(); + usc.reset (new SettingsController); + UserSettingsController::InitializeSettingsController (usc, + SettingsController::global_settings_table, + SettingsController::instance_settings_table); +} - if (!initialized) - { - initialized = UserSettingsController::InitializeSettingsController (g_settings_controller, - Target::SettingsController::global_settings_table, - Target::SettingsController::instance_settings_table); - } - - if (finish) - { - UserSettingsController::FinalizeSettingsController (g_settings_controller); - g_settings_controller.reset(); - initialized = false; - } +void +Target::Terminate () +{ + UserSettingsControllerSP &usc = GetSettingsController(); + UserSettingsController::FinalizeSettingsController (usc); + usc.reset(); +} +UserSettingsControllerSP & +Target::GetSettingsController () +{ + static UserSettingsControllerSP g_settings_controller; return g_settings_controller; } diff --git a/lldb/source/Target/Thread.cpp b/lldb/source/Target/Thread.cpp index 22129d6ff6a4..789f3a0362b7 100644 --- a/lldb/source/Target/Thread.cpp +++ b/lldb/source/Target/Thread.cpp @@ -930,26 +930,29 @@ Thread::GetSP () return m_process.GetThreadList().GetThreadSPForThreadPtr(this); } -lldb::UserSettingsControllerSP -Thread::GetSettingsController (bool finish) + +void +Thread::Initialize () { - static UserSettingsControllerSP g_settings_controller (new ThreadSettingsController); - static bool initialized = false; + UserSettingsControllerSP &usc = GetSettingsController(); + usc.reset (new SettingsController); + UserSettingsController::InitializeSettingsController (usc, + SettingsController::global_settings_table, + SettingsController::instance_settings_table); +} - if (!initialized) - { - initialized = UserSettingsController::InitializeSettingsController (g_settings_controller, - Thread::ThreadSettingsController::global_settings_table, - Thread::ThreadSettingsController::instance_settings_table); - } - - if (finish) - { - UserSettingsController::FinalizeSettingsController (g_settings_controller); - g_settings_controller.reset(); - initialized = false; - } +void +Thread::Terminate () +{ + UserSettingsControllerSP &usc = GetSettingsController(); + UserSettingsController::FinalizeSettingsController (usc); + usc.reset(); +} +UserSettingsControllerSP & +Thread::GetSettingsController () +{ + static UserSettingsControllerSP g_settings_controller; return g_settings_controller; } @@ -1010,24 +1013,24 @@ Thread::RunModeAsCString (lldb::RunMode mode) return unknown_state_string; } -#pragma mark "Thread::ThreadSettingsController" +#pragma mark "Thread::SettingsController" //-------------------------------------------------------------- -// class Thread::ThreadSettingsController +// class Thread::SettingsController //-------------------------------------------------------------- -Thread::ThreadSettingsController::ThreadSettingsController () : +Thread::SettingsController::SettingsController () : UserSettingsController ("thread", Process::GetSettingsController()) { m_default_settings.reset (new ThreadInstanceSettings (*this, false, InstanceSettings::GetDefaultName().AsCString())); } -Thread::ThreadSettingsController::~ThreadSettingsController () +Thread::SettingsController::~SettingsController () { } lldb::InstanceSettingsSP -Thread::ThreadSettingsController::CreateInstanceSettings (const char *instance_name) +Thread::SettingsController::CreateInstanceSettings (const char *instance_name) { ThreadInstanceSettings *new_settings = new ThreadInstanceSettings (*(Thread::GetSettingsController().get()), false, instance_name); @@ -1218,11 +1221,11 @@ ThreadInstanceSettings::GetTraceThreadVarName () } //-------------------------------------------------- -// ThreadSettingsController Variable Tables +// SettingsController Variable Tables //-------------------------------------------------- SettingEntry -Thread::ThreadSettingsController::global_settings_table[] = +Thread::SettingsController::global_settings_table[] = { //{ "var-name", var-type , "default", enum-table, init'd, hidden, "help-text"}, { NULL, eSetVarTypeNone, NULL, NULL, 0, 0, NULL } @@ -1230,7 +1233,7 @@ Thread::ThreadSettingsController::global_settings_table[] = SettingEntry -Thread::ThreadSettingsController::instance_settings_table[] = +Thread::SettingsController::instance_settings_table[] = { //{ "var-name", var-type, "default", enum-table, init'd, hidden, "help-text"}, { "step-avoid-regexp", eSetVarTypeString, "", NULL, false, false, "A regular expression defining functions step-in won't stop in." }, diff --git a/lldb/source/lldb-log.cpp b/lldb/source/lldb-log.cpp index a0884a6ac5b1..5e4d6f545c41 100644 --- a/lldb/source/lldb-log.cpp +++ b/lldb/source/lldb-log.cpp @@ -101,43 +101,46 @@ void lldb_private::DisableLog (Args &args, Stream *feedback_strm) { LogSP log(GetLog ()); - uint32_t flag_bits; if (log) { - flag_bits = log->GetMask().Get(); + uint32_t flag_bits = 0; const size_t argc = args.GetArgumentCount (); - for (size_t i = 0; i < argc; ++i) + if (argc > 0) { - const char *arg = args.GetArgumentAtIndex (i); - - if (strcasecmp(arg, "all") == 0 ) flag_bits &= ~LIBLLDB_LOG_ALL; - else if (strcasecmp(arg, "api") == 0) flag_bits &= ~LIBLLDB_LOG_API; - else if (strcasestr(arg, "break") == arg) flag_bits &= ~LIBLLDB_LOG_BREAKPOINTS; - else if (strcasecmp(arg, "default") == 0 ) flag_bits &= ~LIBLLDB_LOG_DEFAULT; - else if (strcasecmp(arg, "dyld") == 0 ) flag_bits &= ~LIBLLDB_LOG_DYNAMIC_LOADER; - else if (strcasestr(arg, "event") == arg) flag_bits &= ~LIBLLDB_LOG_EVENTS; - else if (strcasestr(arg, "expr") == arg) flag_bits &= ~LIBLLDB_LOG_EXPRESSIONS; - else if (strcasestr(arg, "object") == arg) flag_bits &= ~LIBLLDB_LOG_OBJECT; - else if (strcasecmp(arg, "process") == 0 ) flag_bits &= ~LIBLLDB_LOG_PROCESS; - else if (strcasecmp(arg, "script") == 0) flag_bits &= ~LIBLLDB_LOG_SCRIPT; - else if (strcasecmp(arg, "state") == 0 ) flag_bits &= ~LIBLLDB_LOG_STATE; - else if (strcasecmp(arg, "step") == 0 ) flag_bits &= ~LIBLLDB_LOG_STEP; - else if (strcasecmp(arg, "thread") == 0 ) flag_bits &= ~LIBLLDB_LOG_THREAD; - else if (strcasecmp(arg, "verbose") == 0 ) flag_bits &= ~LIBLLDB_LOG_VERBOSE; - else if (strcasestr(arg, "watch") == arg) flag_bits &= ~LIBLLDB_LOG_WATCHPOINTS; - else if (strcasestr(arg, "temp") == arg) flag_bits &= ~LIBLLDB_LOG_TEMPORARY; - else if (strcasestr(arg, "comm") == arg) flag_bits &= ~LIBLLDB_LOG_COMMUNICATION; - else if (strcasestr(arg, "conn") == arg) flag_bits &= ~LIBLLDB_LOG_CONNECTION; - else if (strcasestr(arg, "host") == arg) flag_bits &= ~LIBLLDB_LOG_HOST; - else if (strcasestr(arg, "unwind") == arg) flag_bits &= ~LIBLLDB_LOG_UNWIND; - else + flag_bits = log->GetMask().Get(); + for (size_t i = 0; i < argc; ++i) { - feedback_strm->Printf ("error: unrecognized log category '%s'\n", arg); - ListLogCategories (feedback_strm); - return; + const char *arg = args.GetArgumentAtIndex (i); + + if (strcasecmp(arg, "all") == 0 ) flag_bits &= ~LIBLLDB_LOG_ALL; + else if (strcasecmp(arg, "api") == 0) flag_bits &= ~LIBLLDB_LOG_API; + else if (strcasestr(arg, "break") == arg) flag_bits &= ~LIBLLDB_LOG_BREAKPOINTS; + else if (strcasecmp(arg, "default") == 0 ) flag_bits &= ~LIBLLDB_LOG_DEFAULT; + else if (strcasecmp(arg, "dyld") == 0 ) flag_bits &= ~LIBLLDB_LOG_DYNAMIC_LOADER; + else if (strcasestr(arg, "event") == arg) flag_bits &= ~LIBLLDB_LOG_EVENTS; + else if (strcasestr(arg, "expr") == arg) flag_bits &= ~LIBLLDB_LOG_EXPRESSIONS; + else if (strcasestr(arg, "object") == arg) flag_bits &= ~LIBLLDB_LOG_OBJECT; + else if (strcasecmp(arg, "process") == 0 ) flag_bits &= ~LIBLLDB_LOG_PROCESS; + else if (strcasecmp(arg, "script") == 0) flag_bits &= ~LIBLLDB_LOG_SCRIPT; + else if (strcasecmp(arg, "state") == 0 ) flag_bits &= ~LIBLLDB_LOG_STATE; + else if (strcasecmp(arg, "step") == 0 ) flag_bits &= ~LIBLLDB_LOG_STEP; + else if (strcasecmp(arg, "thread") == 0 ) flag_bits &= ~LIBLLDB_LOG_THREAD; + else if (strcasecmp(arg, "verbose") == 0 ) flag_bits &= ~LIBLLDB_LOG_VERBOSE; + else if (strcasestr(arg, "watch") == arg) flag_bits &= ~LIBLLDB_LOG_WATCHPOINTS; + else if (strcasestr(arg, "temp") == arg) flag_bits &= ~LIBLLDB_LOG_TEMPORARY; + else if (strcasestr(arg, "comm") == arg) flag_bits &= ~LIBLLDB_LOG_COMMUNICATION; + else if (strcasestr(arg, "conn") == arg) flag_bits &= ~LIBLLDB_LOG_CONNECTION; + else if (strcasestr(arg, "host") == arg) flag_bits &= ~LIBLLDB_LOG_HOST; + else if (strcasestr(arg, "unwind") == arg) flag_bits &= ~LIBLLDB_LOG_UNWIND; + else + { + feedback_strm->Printf ("error: unrecognized log category '%s'\n", arg); + ListLogCategories (feedback_strm); + return; + } + } - } if (flag_bits == 0) GetLog ().reset(); diff --git a/lldb/source/lldb.cpp b/lldb/source/lldb.cpp index 4d26a155c1f3..082274bb1bb2 100644 --- a/lldb/source/lldb.cpp +++ b/lldb/source/lldb.cpp @@ -57,12 +57,13 @@ lldb_private::Initialize () if (!g_inited) { g_inited = true; + Log::Initialize(); Timer::Initialize (); Timer scoped_timer (__PRETTY_FUNCTION__, __PRETTY_FUNCTION__); - - Log::Callbacks log_callbacks = { DisableLog, EnableLog, ListLogCategories }; - - Log::RegisterLogChannel ("lldb", log_callbacks); + + Target::Initialize (); + Process::Initialize (); + Thread::Initialize (); DisassemblerLLVM::Initialize(); ObjectContainerBSDArchive::Initialize(); ObjectFileELF::Initialize(); @@ -86,10 +87,6 @@ lldb_private::Initialize () //ProcessMacOSX::Initialize(); SymbolVendorMacOSX::Initialize(); #endif - Debugger::GetSettingsController (false); - Target::GetSettingsController (false); - Process::GetSettingsController (false); - Thread::GetSettingsController (false); #ifdef __linux__ ProcessLinux::Initialize(); #endif @@ -128,14 +125,15 @@ lldb_private::Terminate () SymbolVendorMacOSX::Terminate(); #endif - Thread::GetSettingsController (true); - Process::GetSettingsController (true); - Target::GetSettingsController (true); - Debugger::GetSettingsController (true); - + Thread::Terminate (); + Process::Terminate (); + Target::Terminate (); + #ifdef __linux__ ProcessLinux::Terminate(); #endif + + Log::Terminate(); } extern "C" const double LLDBVersionNumber;