lldb-log.cpp revision 926060e198137f8a64face70455324a8cd4362a5
124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- lldb-log.cpp --------------------------------------------*- C++ -*-===// 224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// The LLVM Compiler Infrastructure 424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source 624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details. 724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===// 924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/lldb-private-log.h" 1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C Includes 1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C++ Includes 1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Other libraries and framework includes 1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Project includes 1684cdc15005983e5244d665fa779e33c2b6fac95fJim Ingham#include "lldb/Interpreter/Args.h" 1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/Log.h" 1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/StreamFile.h" 19ce6fe885c2e30f5ac6e0c787cb571a01f9d41f85Eli Friedman#include <string.h> 2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerusing namespace lldb; 2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerusing namespace lldb_private; 2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerstatic Log * 2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerLogAccessor (bool get, StreamSP *stream_sp_ptr) 2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner static Log* g_log = NULL; // Leak for now as auto_ptr was being cleaned up 2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // by global constructors before other threads 3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // were done with it. 3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (!get) 3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (g_log) 3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner delete g_log; 3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (stream_sp_ptr) 3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner g_log = new Log (*stream_sp_ptr); 3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else 3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner g_log = NULL; 3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return g_log; 4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattneruint32_t 4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerlldb_private::GetLogMask () 4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Log *log = LogAccessor (true, NULL); 4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (log) 50f3d0b0c8081691128626eb496fdfcbf8ae54c1deGreg Clayton return log->GetMask().Get(); 5124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return 0; 5224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 5324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 5424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerbool 5524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerlldb_private::IsLogVerbose () 5624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 5724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner uint32_t mask = GetLogMask(); 5824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return (mask & LIBLLDB_LOG_VERBOSE); 5924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 6124943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerLog * 6224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerlldb_private::GetLogIfAllCategoriesSet (uint32_t mask) 6324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 6424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Log *log = LogAccessor (true, NULL); 6524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (log && mask) 6624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 67f3d0b0c8081691128626eb496fdfcbf8ae54c1deGreg Clayton uint32_t log_mask = log->GetMask().Get(); 6824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if ((log_mask & mask) != mask) 6924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return NULL; 7024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 7124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return log; 7224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 7324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 7424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnervoid 7524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerlldb_private::LogIfAllCategoriesSet (uint32_t mask, const char *format, ...) 7624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 7724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Log *log = GetLogIfAllCategoriesSet (mask); 7824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (log) 7924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 8024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner va_list args; 8124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner va_start (args, format); 8224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner log->VAPrintf (format, args); 8324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner va_end (args); 8424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 8524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 8624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 8724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnervoid 8824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerlldb_private::LogIfAnyCategoriesSet (uint32_t mask, const char *format, ...) 8924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 9024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Log *log = GetLogIfAnyCategoriesSet (mask); 9124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (log) 9224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 9324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner va_list args; 9424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner va_start (args, format); 9524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner log->VAPrintf (format, args); 9624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner va_end (args); 9724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 9824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 9924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 10024943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerLog * 10124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerlldb_private::GetLogIfAnyCategoriesSet (uint32_t mask) 10224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 10324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Log *log = LogAccessor (true, NULL); 104f3d0b0c8081691128626eb496fdfcbf8ae54c1deGreg Clayton if (log && mask && (mask & log->GetMask().Get())) 10524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return log; 10624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return NULL; 10724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 10824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 10924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnervoid 110926060e198137f8a64face70455324a8cd4362a5Caroline Ticelldb_private::DisableLog (Args &args, Stream *feedback_strm) 11124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 112926060e198137f8a64face70455324a8cd4362a5Caroline Tice Log *log = LogAccessor (true, NULL); 113926060e198137f8a64face70455324a8cd4362a5Caroline Tice uint32_t flag_bits; 11424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 115926060e198137f8a64face70455324a8cd4362a5Caroline Tice if (log) 116926060e198137f8a64face70455324a8cd4362a5Caroline Tice { 117926060e198137f8a64face70455324a8cd4362a5Caroline Tice flag_bits = log->GetMask().Get(); 118926060e198137f8a64face70455324a8cd4362a5Caroline Tice const size_t argc = args.GetArgumentCount (); 119926060e198137f8a64face70455324a8cd4362a5Caroline Tice for (size_t i = 0; i < argc; ++i) 120926060e198137f8a64face70455324a8cd4362a5Caroline Tice { 121926060e198137f8a64face70455324a8cd4362a5Caroline Tice const char *arg = args.GetArgumentAtIndex (i); 122926060e198137f8a64face70455324a8cd4362a5Caroline Tice 123926060e198137f8a64face70455324a8cd4362a5Caroline Tice if (strcasecmp(arg, "all") == 0 ) flag_bits &= ~LIBLLDB_LOG_ALL; 124926060e198137f8a64face70455324a8cd4362a5Caroline Tice else if (strcasecmp(arg, "api") == 0) flag_bits &= ~LIBLLDB_LOG_API; 125926060e198137f8a64face70455324a8cd4362a5Caroline Tice else if (strcasestr(arg, "break") == arg) flag_bits &= ~LIBLLDB_LOG_BREAKPOINTS; 126926060e198137f8a64face70455324a8cd4362a5Caroline Tice else if (strcasecmp(arg, "default") == 0 ) flag_bits &= ~LIBLLDB_LOG_DEFAULT; 127926060e198137f8a64face70455324a8cd4362a5Caroline Tice else if (strcasestr(arg, "event") == arg) flag_bits &= ~LIBLLDB_LOG_EVENTS; 128926060e198137f8a64face70455324a8cd4362a5Caroline Tice else if (strcasestr(arg, "expr") == arg) flag_bits &= ~LIBLLDB_LOG_EXPRESSIONS; 129926060e198137f8a64face70455324a8cd4362a5Caroline Tice else if (strcasestr(arg, "object") == arg) flag_bits &= ~LIBLLDB_LOG_OBJECT; 130926060e198137f8a64face70455324a8cd4362a5Caroline Tice else if (strcasecmp(arg, "process") == 0 ) flag_bits &= ~LIBLLDB_LOG_PROCESS; 131926060e198137f8a64face70455324a8cd4362a5Caroline Tice else if (strcasecmp(arg, "shlib") == 0 ) flag_bits &= ~LIBLLDB_LOG_SHLIB; 132926060e198137f8a64face70455324a8cd4362a5Caroline Tice else if (strcasecmp(arg, "state") == 0 ) flag_bits &= ~LIBLLDB_LOG_STATE; 133926060e198137f8a64face70455324a8cd4362a5Caroline Tice else if (strcasecmp(arg, "step") == 0 ) flag_bits &= ~LIBLLDB_LOG_STEP; 134926060e198137f8a64face70455324a8cd4362a5Caroline Tice else if (strcasecmp(arg, "thread") == 0 ) flag_bits &= ~LIBLLDB_LOG_THREAD; 135926060e198137f8a64face70455324a8cd4362a5Caroline Tice else if (strcasecmp(arg, "verbose") == 0 ) flag_bits &= ~LIBLLDB_LOG_VERBOSE; 136926060e198137f8a64face70455324a8cd4362a5Caroline Tice else if (strcasestr(arg, "watch") == arg) flag_bits &= ~LIBLLDB_LOG_WATCHPOINTS; 137926060e198137f8a64face70455324a8cd4362a5Caroline Tice else if (strcasestr(arg, "temp") == arg) flag_bits &= ~LIBLLDB_LOG_TEMPORARY; 138926060e198137f8a64face70455324a8cd4362a5Caroline Tice else if (strcasestr(arg, "comm") == arg) flag_bits &= ~LIBLLDB_LOG_COMMUNICATION; 139926060e198137f8a64face70455324a8cd4362a5Caroline Tice else if (strcasestr(arg, "conn") == arg) flag_bits &= ~LIBLLDB_LOG_CONNECTION; 140926060e198137f8a64face70455324a8cd4362a5Caroline Tice else if (strcasestr(arg, "host") == arg) flag_bits &= ~LIBLLDB_LOG_HOST; 141926060e198137f8a64face70455324a8cd4362a5Caroline Tice else if (strcasestr(arg, "unwind") == arg) flag_bits &= ~LIBLLDB_LOG_UNWIND; 142926060e198137f8a64face70455324a8cd4362a5Caroline Tice else 143926060e198137f8a64face70455324a8cd4362a5Caroline Tice { 144926060e198137f8a64face70455324a8cd4362a5Caroline Tice feedback_strm->Printf ("error: unrecognized log category '%s'\n", arg); 145926060e198137f8a64face70455324a8cd4362a5Caroline Tice ListLogCategories (feedback_strm); 146926060e198137f8a64face70455324a8cd4362a5Caroline Tice return; 147926060e198137f8a64face70455324a8cd4362a5Caroline Tice } 148926060e198137f8a64face70455324a8cd4362a5Caroline Tice 149926060e198137f8a64face70455324a8cd4362a5Caroline Tice } 150926060e198137f8a64face70455324a8cd4362a5Caroline Tice if (flag_bits == 0) 151926060e198137f8a64face70455324a8cd4362a5Caroline Tice LogAccessor (false, NULL); 152926060e198137f8a64face70455324a8cd4362a5Caroline Tice else 153926060e198137f8a64face70455324a8cd4362a5Caroline Tice log->GetMask().Reset (flag_bits); 154926060e198137f8a64face70455324a8cd4362a5Caroline Tice } 155926060e198137f8a64face70455324a8cd4362a5Caroline Tice 156926060e198137f8a64face70455324a8cd4362a5Caroline Tice return; 157926060e198137f8a64face70455324a8cd4362a5Caroline Tice} 15824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 15924943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerLog * 16024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerlldb_private::EnableLog (StreamSP &log_stream_sp, uint32_t log_options, Args &args, Stream *feedback_strm) 16124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 16224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // Try see if there already is a log - that way we can reuse its settings. 16324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // We could reuse the log in toto, but we don't know that the stream is the same. 16424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner uint32_t flag_bits; 16524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Log* log = LogAccessor (true, NULL); 16624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (log) 167f3d0b0c8081691128626eb496fdfcbf8ae54c1deGreg Clayton flag_bits = log->GetMask().Get(); 16824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else 16924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner flag_bits = 0; 17024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 17124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // Now make a new log with this stream. 17224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner log = LogAccessor (false, &log_stream_sp); 17324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (log) 17424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 17524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool got_unknown_category = false; 17624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const size_t argc = args.GetArgumentCount(); 17724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner for (size_t i=0; i<argc; ++i) 17824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 17924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const char *arg = args.GetArgumentAtIndex(i); 18024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 18124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (strcasecmp(arg, "all") == 0 ) flag_bits |= LIBLLDB_LOG_ALL; 1827826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice else if (strcasecmp(arg, "api") == 0) flag_bits |= LIBLLDB_LOG_API; 18324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else if (strcasestr(arg, "break") == arg) flag_bits |= LIBLLDB_LOG_BREAKPOINTS; 18424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else if (strcasecmp(arg, "default") == 0 ) flag_bits |= LIBLLDB_LOG_DEFAULT; 18524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else if (strcasestr(arg, "event") == arg) flag_bits |= LIBLLDB_LOG_EVENTS; 18624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else if (strcasestr(arg, "expr") == arg) flag_bits |= LIBLLDB_LOG_EXPRESSIONS; 18724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else if (strcasestr(arg, "object") == arg) flag_bits |= LIBLLDB_LOG_OBJECT; 18824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else if (strcasecmp(arg, "process") == 0 ) flag_bits |= LIBLLDB_LOG_PROCESS; 18924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else if (strcasecmp(arg, "shlib") == 0 ) flag_bits |= LIBLLDB_LOG_SHLIB; 19024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else if (strcasecmp(arg, "state") == 0 ) flag_bits |= LIBLLDB_LOG_STATE; 19124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else if (strcasecmp(arg, "step") == 0 ) flag_bits |= LIBLLDB_LOG_STEP; 19224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else if (strcasecmp(arg, "thread") == 0 ) flag_bits |= LIBLLDB_LOG_THREAD; 19324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else if (strcasecmp(arg, "verbose") == 0 ) flag_bits |= LIBLLDB_LOG_VERBOSE; 19424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else if (strcasestr(arg, "watch") == arg) flag_bits |= LIBLLDB_LOG_WATCHPOINTS; 19524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else if (strcasestr(arg, "temp") == arg) flag_bits |= LIBLLDB_LOG_TEMPORARY; 19624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else if (strcasestr(arg, "comm") == arg) flag_bits |= LIBLLDB_LOG_COMMUNICATION; 19724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else if (strcasestr(arg, "conn") == arg) flag_bits |= LIBLLDB_LOG_CONNECTION; 198b0fff359652c7b3c0eb6fb6c37995e61e6cc652dJim Ingham else if (strcasestr(arg, "host") == arg) flag_bits |= LIBLLDB_LOG_HOST; 1998280cbe80c79bc206335831dd732e0f9fb69c519Jason Molenda else if (strcasestr(arg, "unwind") == arg) flag_bits |= LIBLLDB_LOG_UNWIND; 20024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else 20124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 20224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner feedback_strm->Printf("error: unrecognized log category '%s'\n", arg); 20324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (got_unknown_category == false) 20424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 20524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner got_unknown_category = true; 20624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ListLogCategories (feedback_strm); 20724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return log; 20824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 20924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 21024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 21124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 212f3d0b0c8081691128626eb496fdfcbf8ae54c1deGreg Clayton log->GetMask().Reset(flag_bits); 213f3d0b0c8081691128626eb496fdfcbf8ae54c1deGreg Clayton log->GetOptions().Reset(log_options); 21424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 21524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return log; 21624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 21724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 21824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 21924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnervoid 22024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerlldb_private::ListLogCategories (Stream *strm) 22124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 22224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner strm->Printf("Logging categories for 'lldb':\n" 22324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner "\tall - turn on all available logging categories\n" 2247826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice "\tapi - enable logging of API calls and return values\n" 22524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner "\tdefault - enable the default set of logging categories for liblldb\n" 22624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner "\tbreak - log breakpoints\n" 22724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner "\tevents - log broadcaster, listener and event queue activities\n" 22824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner "\texpr - log expressions\n" 22924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner "\tobject - log object construction/destruction for important objects\n" 23024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner "\tprocess - log process events and activities\n" 23124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner "\tthread - log thread events and activities\n" 23224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner "\tshlib - log shared library related activities\n" 23324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner "\tstate - log private and public process state changes\n" 23424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner "\tstep - log step related activities\n" 2358280cbe80c79bc206335831dd732e0f9fb69c519Jason Molenda "\tunwind - log stack unwind activities\n" 23624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner "\tverbose - enable verbose loggging\n" 23724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner "\twatch - log watchpoint related activities\n"); 23824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 239