aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/Target/UnixSignals.cpp
diff options
context:
space:
mode:
authorGreg Clayton <gclayton@fb.com>2021-10-27 18:33:17 -0700
committerGreg Clayton <gclayton@fb.com>2021-10-27 22:31:14 -0700
commit130055647922ffa9dd9abd5a838727773f73c48a (patch)
treef8ce3935bca1d59837d04e3c8f35d35a71cbf9a0 /lldb/source/Target/UnixSignals.cpp
parenteacd6e1ebef511b216c8b2805e7e662b9902de74 (diff)
downloadllvm-130055647922ffa9dd9abd5a838727773f73c48a.zip
llvm-130055647922ffa9dd9abd5a838727773f73c48a.tar.gz
llvm-130055647922ffa9dd9abd5a838727773f73c48a.tar.bz2
Add unix signal hit counts to the target statistics.
Android and other platforms make wide use of signals when running applications and this can slow down debug sessions. Tracking this statistic can help us to determine why a debug session is slow. The new data appears inside each target object and reports the signal hit counts: "signals": [ { "SIGSTOP": 1 }, { "SIGUSR1": 1 } ], Differential Revision: https://reviews.llvm.org/D112683
Diffstat (limited to 'lldb/source/Target/UnixSignals.cpp')
-rw-r--r--lldb/source/Target/UnixSignals.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/lldb/source/Target/UnixSignals.cpp b/lldb/source/Target/UnixSignals.cpp
index 6e857e6..26ff0bb 100644
--- a/lldb/source/Target/UnixSignals.cpp
+++ b/lldb/source/Target/UnixSignals.cpp
@@ -15,6 +15,7 @@
#include "lldb/Utility/ArchSpec.h"
using namespace lldb_private;
+using namespace llvm;
UnixSignals::Signal::Signal(const char *name, bool default_suppress,
bool default_stop, bool default_notify,
@@ -312,3 +313,20 @@ UnixSignals::GetFilteredSignals(llvm::Optional<bool> should_suppress,
return result;
}
+
+void UnixSignals::IncrementSignalHitCount(int signo) {
+ collection::iterator pos = m_signals.find(signo);
+ if (pos != m_signals.end())
+ pos->second.m_hit_count += 1;
+}
+
+json::Value UnixSignals::GetHitCountStatistics() const {
+ json::Array json_signals;
+ for (const auto &pair: m_signals) {
+ if (pair.second.m_hit_count > 0)
+ json_signals.emplace_back(json::Object{
+ { pair.second.m_name.GetCString(), pair.second.m_hit_count }
+ });
+ }
+ return std::move(json_signals);
+}