diff options
Diffstat (limited to 'lldb/source/Core')
-rw-r--r-- | lldb/source/Core/Log.cpp | 3 | ||||
-rw-r--r-- | lldb/source/Core/Module.cpp | 12 | ||||
-rw-r--r-- | lldb/source/Core/ModuleList.cpp | 5 |
3 files changed, 14 insertions, 6 deletions
diff --git a/lldb/source/Core/Log.cpp b/lldb/source/Core/Log.cpp index 0b163fb04f5..17281c03fd0 100644 --- a/lldb/source/Core/Log.cpp +++ b/lldb/source/Core/Log.cpp @@ -118,6 +118,9 @@ Log::PrintfWithFlagsVarArg (uint32_t flags, const char *format, va_list args) header.PrintfVarArg (format, args); m_stream_sp->Printf("%s\n", header.GetData()); + + if (m_options.Test (LLDB_LOG_OPTION_BACKTRACE)) + Host::Backtrace (*m_stream_sp, 1024); m_stream_sp->Flush(); } } diff --git a/lldb/source/Core/Module.cpp b/lldb/source/Core/Module.cpp index 64a5ebdb722..0c82b6686ab 100644 --- a/lldb/source/Core/Module.cpp +++ b/lldb/source/Core/Module.cpp @@ -117,7 +117,7 @@ namespace lldb { } #endif - + Module::Module (const ModuleSpec &module_spec) : m_mutex (Mutex::eMutexTypeRecursive), m_mod_time (module_spec.GetFileSpec().GetModificationTime()), @@ -146,7 +146,7 @@ Module::Module (const ModuleSpec &module_spec) : GetModuleCollection().push_back(this); } - LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_OBJECT)); + LogSP log(lldb_private::GetLogIfAnyCategoriesSet (LIBLLDB_LOG_OBJECT|LIBLLDB_LOG_MODULES)); if (log) log->Printf ("%p Module::Module((%s) '%s/%s%s%s%s')", this, @@ -191,7 +191,7 @@ Module::Module(const FileSpec& file_spec, if (object_name) m_object_name = *object_name; - LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_OBJECT)); + LogSP log(lldb_private::GetLogIfAnyCategoriesSet (LIBLLDB_LOG_OBJECT|LIBLLDB_LOG_MODULES)); if (log) log->Printf ("%p Module::Module((%s) '%s/%s%s%s%s')", this, @@ -211,10 +211,10 @@ Module::~Module() ModuleCollection &modules = GetModuleCollection(); ModuleCollection::iterator end = modules.end(); ModuleCollection::iterator pos = std::find(modules.begin(), end, this); - if (pos != end) - modules.erase(pos); + assert (pos != end); + modules.erase(pos); } - LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_OBJECT)); + LogSP log(lldb_private::GetLogIfAnyCategoriesSet (LIBLLDB_LOG_OBJECT|LIBLLDB_LOG_MODULES)); if (log) log->Printf ("%p Module::~Module((%s) '%s/%s%s%s%s')", this, diff --git a/lldb/source/Core/ModuleList.cpp b/lldb/source/Core/ModuleList.cpp index 5adffa1e679..338482b3ff7 100644 --- a/lldb/source/Core/ModuleList.cpp +++ b/lldb/source/Core/ModuleList.cpp @@ -724,6 +724,11 @@ ModuleList::GetSharedModule { if (old_module_sp_ptr && !old_module_sp_ptr->get()) *old_module_sp_ptr = module_sp; + + LogSP log(lldb_private::GetLogIfAnyCategoriesSet (LIBLLDB_LOG_MODULES)); + if (log) + log->Printf("module changed: %p, removing from global module list", module_sp.get()); + shared_module_list.Remove (module_sp); module_sp.reset(); } |