diff --git a/source/Core/ModuleList.cpp b/source/Core/ModuleList.cpp
index d829123..aca9a97 100644
--- a/source/Core/ModuleList.cpp
+++ b/source/Core/ModuleList.cpp
@@ -13,6 +13,7 @@
 // C++ Includes
 // Other libraries and framework includes
 // Project includes
+#include "lldb/Core/Log.h"
 #include "lldb/Core/Module.h"
 #include "lldb/Host/Symbols.h"
 #include "lldb/Symbol/ObjectFile.h"
@@ -374,6 +375,29 @@
     }
 }
 
+void
+ModuleList::LogUUIDAndPaths (LogSP &log_sp, const char *prefix_cstr)
+{
+    if (log_sp)
+    {   
+        Mutex::Locker locker(m_modules_mutex);
+        char uuid_cstr[256];
+        collection::const_iterator pos, begin = m_modules.begin(), end = m_modules.end();
+        for (pos = begin; pos != end; ++pos)
+        {
+            Module *module = pos->get();
+            module->GetUUID().GetAsCString (uuid_cstr, sizeof(uuid_cstr));
+            const FileSpec &module_file_spec = module->GetFileSpec();
+            log_sp->Printf ("%s[%u] %s (%s) \"%s/%s\"", 
+                            prefix_cstr ? prefix_cstr : "",
+                            (uint32_t)std::distance (begin, pos),
+                            uuid_cstr,
+                            module->GetArchitecture().AsCString(),
+                            module_file_spec.GetDirectory().GetCString(),
+                            module_file_spec.GetFilename().GetCString());
+        }
+    }
+}
 
 bool
 ModuleList::ResolveFileAddress (lldb::addr_t vm_addr, Address& so_addr)
