Author: Alex Langford Date: 2023-02-15T16:35:51-08:00 New Revision: dcf18e4757b2bc2410031e7b69082117d540a1d6
URL: https://github.com/llvm/llvm-project/commit/dcf18e4757b2bc2410031e7b69082117d540a1d6 DIFF: https://github.com/llvm/llvm-project/commit/dcf18e4757b2bc2410031e7b69082117d540a1d6.diff LOG: [debugserver] Initialize logging earlier in the startup sequence Prior to setting up logging, we have uses of RNBLogSTDERR and RNBLogSTDOUT. These macros will dump to STDERR and STDOUT respectively if debugserver has a tty. Otherwise, it uses _DNBLog, which will do nothing if a logging function hasn't been set up. For example, if you specify a log file that cannot be opened for any reason and you don't have a tty, you have 0 insight into what happened. rdar://105473133 Differential Revision: https://reviews.llvm.org/D144142 Added: Modified: lldb/tools/debugserver/source/debugserver.cpp Removed: ################################################################################ diff --git a/lldb/tools/debugserver/source/debugserver.cpp b/lldb/tools/debugserver/source/debugserver.cpp index cbff6ac56f773..cfc9646ed2d08 100644 --- a/lldb/tools/debugserver/source/debugserver.cpp +++ b/lldb/tools/debugserver/source/debugserver.cpp @@ -945,6 +945,21 @@ int main(int argc, char *argv[]) { sigaddset(&sigset, SIGCHLD); sigprocmask(SIG_BLOCK, &sigset, NULL); + // Set up DNB logging by default. If the user passes diff erent log flags or a + // log file, these settings will be modified after processing the command line + // arguments. + auto log_callback = OsLogger::GetLogFunction(); + if (log_callback) { + // if os_log() support is available, log through that. + DNBLogSetLogCallback(log_callback, nullptr); + DNBLog("debugserver will use os_log for internal logging."); + } else { + // Fall back to ASL support. + DNBLogSetLogCallback(ASLLogCallback, nullptr); + DNBLog("debugserver will use ASL for internal logging."); + } + DNBLogSetLogMask(/*log_flags*/ 0); + g_remoteSP = std::make_shared<RNBRemote>(); RNBRemote *remote = g_remoteSP.get(); @@ -1318,27 +1333,13 @@ int main(int argc, char *argv[]) { // It is ok for us to set NULL as the logfile (this will disable any logging) if (log_file != NULL) { + DNBLog("debugserver is switching to logging to a file."); DNBLogSetLogCallback(FileLogCallback, log_file); // If our log file was set, yet we have no log flags, log everything! if (log_flags == 0) log_flags = LOG_ALL | LOG_RNB_ALL; - - DNBLogSetLogMask(log_flags); - } else { - // Enable DNB logging - - // if os_log() support is available, log through that. - auto log_callback = OsLogger::GetLogFunction(); - if (log_callback) { - DNBLogSetLogCallback(log_callback, nullptr); - DNBLog("debugserver will use os_log for internal logging."); - } else { - // Fall back to ASL support. - DNBLogSetLogCallback(ASLLogCallback, NULL); - DNBLog("debugserver will use ASL for internal logging."); - } - DNBLogSetLogMask(log_flags); } + DNBLogSetLogMask(log_flags); if (DNBLogEnabled()) { for (i = 0; i < argc; i++) _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits