From 482a0ad5ba72d2c306afd2d529f155554eadcd8a Mon Sep 17 00:00:00 2001 From: Med Ismail Bennani Date: Mon, 24 Apr 2023 12:45:49 -0700 Subject: [PATCH] [lldb] Improve logging for process state change (NFC) This patch improves process state change logging messages to include to process plugin name. It also replaces the `LLDB_LOGF` macro by `LLDB_LOG` macro that adds the class and method name in the log message using the compiler instead of having to change the string litteral for every method. This is very useful when investigating interactions between different types of process plugins. That comes very handy when investigating bugs related to interactive scripted process debugging. Differential Revision: https://reviews.llvm.org/D148399 Signed-off-by: Med Ismail Bennani --- lldb/source/Target/Process.cpp | 44 +++++++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/lldb/source/Target/Process.cpp b/lldb/source/Target/Process.cpp index 5de32e2..3f2e3b8 100644 --- a/lldb/source/Target/Process.cpp +++ b/lldb/source/Target/Process.cpp @@ -1055,14 +1055,16 @@ bool Process::SetExitStatus(int status, const char *cstr) { std::lock_guard guard(m_exit_status_mutex); Log *log(GetLog(LLDBLog::State | LLDBLog::Process)); - LLDB_LOGF( - log, "Process::SetExitStatus (status=%i (0x%8.8x), description=%s%s%s)", - status, status, cstr ? "\"" : "", cstr ? cstr : "NULL", cstr ? "\"" : ""); + LLDB_LOG(log, "(plugin = %s status=%i (0x%8.8x), description=%s%s%s)", + GetPluginName().data(), status, status, cstr ? "\"" : "", + cstr ? cstr : "NULL", cstr ? "\"" : ""); // We were already in the exited state if (m_private_state.GetValue() == eStateExited) { - LLDB_LOGF(log, "Process::SetExitStatus () ignoring exit status because " - "state was already set to eStateExited"); + LLDB_LOG(log, + "(plugin = %s) ignoring exit status because state was already set " + "to eStateExited", + GetPluginName().data()); return false; } @@ -1314,8 +1316,8 @@ void Process::SetPublicState(StateType new_state, bool restarted) { } Log *log(GetLog(LLDBLog::State | LLDBLog::Process)); - LLDB_LOGF(log, "Process::SetPublicState (state = %s, restarted = %i)", - StateAsCString(new_state), restarted); + LLDB_LOG(log, "(plugin = %s, state = %s, restarted = %i)", + GetPluginName().data(), StateAsCString(new_state), restarted); const StateType old_state = m_public_state.GetValue(); m_public_state.SetValue(new_state); @@ -1324,16 +1326,16 @@ void Process::SetPublicState(StateType new_state, bool restarted) { // program to run. if (!StateChangedIsExternallyHijacked()) { if (new_state == eStateDetached) { - LLDB_LOGF(log, - "Process::SetPublicState (%s) -- unlocking run lock for detach", - StateAsCString(new_state)); + LLDB_LOG(log, + "(plugin = %s, state = %s) -- unlocking run lock for detach", + GetPluginName().data(), StateAsCString(new_state)); m_public_run_lock.SetStopped(); } else { const bool old_state_is_stopped = StateIsStoppedState(old_state, false); if ((old_state_is_stopped != new_state_is_stopped)) { if (new_state_is_stopped && !restarted) { - LLDB_LOGF(log, "Process::SetPublicState (%s) -- unlocking run lock", - StateAsCString(new_state)); + LLDB_LOG(log, "(plugin = %s, state = %s) -- unlocking run lock", + GetPluginName().data(), StateAsCString(new_state)); m_public_run_lock.SetStopped(); } } @@ -1343,10 +1345,11 @@ void Process::SetPublicState(StateType new_state, bool restarted) { Status Process::Resume() { Log *log(GetLog(LLDBLog::State | LLDBLog::Process)); - LLDB_LOGF(log, "Process::Resume -- locking run lock"); + LLDB_LOG(log, "(plugin = %s) -- locking run lock", GetPluginName().data()); if (!m_public_run_lock.TrySetRunning()) { Status error("Resume request failed - process still running."); - LLDB_LOGF(log, "Process::Resume: -- TrySetRunning failed, not resuming."); + LLDB_LOG(log, "(plugin = %s) -- TrySetRunning failed, not resuming.", + GetPluginName().data()); return error; } Status error = PrivateResume(); @@ -1419,7 +1422,8 @@ void Process::SetPrivateState(StateType new_state) { Log *log(GetLog(LLDBLog::State | LLDBLog::Process | LLDBLog::Unwind)); bool state_changed = false; - LLDB_LOGF(log, "Process::SetPrivateState (%s)", StateAsCString(new_state)); + LLDB_LOG(log, "(plugin = %s, state = %s)", GetPluginName().data(), + StateAsCString(new_state)); std::lock_guard thread_guard(m_thread_list.GetMutex()); std::lock_guard guard(m_private_state.GetMutex()); @@ -1460,15 +1464,15 @@ void Process::SetPrivateState(StateType new_state) { if (!m_mod_id.IsLastResumeForUserExpression()) m_mod_id.SetStopEventForLastNaturalStopID(event_sp); m_memory_cache.Clear(); - LLDB_LOGF(log, "Process::SetPrivateState (%s) stop_id = %u", - StateAsCString(new_state), m_mod_id.GetStopID()); + LLDB_LOG(log, "(plugin = %s, state = %s, stop_id = %u", + GetPluginName().data(), StateAsCString(new_state), + m_mod_id.GetStopID()); } m_private_state_broadcaster.BroadcastEvent(event_sp); } else { - LLDB_LOGF(log, - "Process::SetPrivateState (%s) state didn't change. Ignoring...", - StateAsCString(new_state)); + LLDB_LOG(log, "(plugin = %s, state = %s) state didn't change. Ignoring...", + GetPluginName().data(), StateAsCString(new_state)); } } -- 2.7.4