diff options
author | Greg Clayton <gclayton@fb.com> | 2021-10-27 18:33:17 -0700 |
---|---|---|
committer | Greg Clayton <gclayton@fb.com> | 2021-10-27 22:31:14 -0700 |
commit | 130055647922ffa9dd9abd5a838727773f73c48a (patch) | |
tree | f8ce3935bca1d59837d04e3c8f35d35a71cbf9a0 /lldb/source/Target/UnixSignals.cpp | |
parent | eacd6e1ebef511b216c8b2805e7e662b9902de74 (diff) | |
download | llvm-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.cpp | 18 |
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); +} |