mirror of
https://github.com/intel/llvm.git
synced 2026-01-25 01:07:04 +08:00
[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
This commit is contained in:
@@ -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 different 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++)
|
||||
|
||||
Reference in New Issue
Block a user