[Lldb-commits] [lldb] r330165 - [Commands] Expose statistics through the SBAPI.
Davide Italiano via lldb-commits
lldb-commits at lists.llvm.org
Mon Apr 16 15:55:34 PDT 2018
Author: davide
Date: Mon Apr 16 15:55:34 2018
New Revision: 330165
URL: http://llvm.org/viewvc/llvm-project?rev=330165&view=rev
Log:
[Commands] Expose statistics through the SBAPI.
The API is `SBStructuredData GetStatistics()`. This allows
the command to be used in scripts.
<rdar://problem/36555975>
Added:
lldb/trunk/packages/Python/lldbsuite/test/functionalities/stats_api/
lldb/trunk/packages/Python/lldbsuite/test/functionalities/stats_api/Makefile
lldb/trunk/packages/Python/lldbsuite/test/functionalities/stats_api/TestStatisticsAPI.py
lldb/trunk/packages/Python/lldbsuite/test/functionalities/stats_api/main.c
Modified:
lldb/trunk/include/lldb/API/SBStructuredData.h
lldb/trunk/include/lldb/API/SBTarget.h
lldb/trunk/scripts/interface/SBTarget.i
lldb/trunk/source/API/SBTarget.cpp
Modified: lldb/trunk/include/lldb/API/SBStructuredData.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/API/SBStructuredData.h?rev=330165&r1=330164&r2=330165&view=diff
==============================================================================
--- lldb/trunk/include/lldb/API/SBStructuredData.h (original)
+++ lldb/trunk/include/lldb/API/SBStructuredData.h Mon Apr 16 15:55:34 2018
@@ -99,6 +99,7 @@ public:
protected:
friend class SBTraceOptions;
friend class SBDebugger;
+ friend class SBTarget;
StructuredDataImplUP m_impl_up;
};
Modified: lldb/trunk/include/lldb/API/SBTarget.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/API/SBTarget.h?rev=330165&r1=330164&r2=330165&view=diff
==============================================================================
--- lldb/trunk/include/lldb/API/SBTarget.h (original)
+++ lldb/trunk/include/lldb/API/SBTarget.h Mon Apr 16 15:55:34 2018
@@ -75,6 +75,8 @@ public:
lldb::SBProcess GetProcess();
+ lldb::SBStructuredData GetStatistics();
+
//------------------------------------------------------------------
/// Return the platform object associated with the target.
///
Added: lldb/trunk/packages/Python/lldbsuite/test/functionalities/stats_api/Makefile
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/stats_api/Makefile?rev=330165&view=auto
==============================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/functionalities/stats_api/Makefile (added)
+++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/stats_api/Makefile Mon Apr 16 15:55:34 2018
@@ -0,0 +1,3 @@
+LEVEL = ../../make
+C_SOURCES := main.c
+include $(LEVEL)/Makefile.rules
Added: lldb/trunk/packages/Python/lldbsuite/test/functionalities/stats_api/TestStatisticsAPI.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/stats_api/TestStatisticsAPI.py?rev=330165&view=auto
==============================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/functionalities/stats_api/TestStatisticsAPI.py (added)
+++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/stats_api/TestStatisticsAPI.py Mon Apr 16 15:55:34 2018
@@ -0,0 +1,28 @@
+# Test the SBAPI for GetStatistics()
+
+import json
+import lldb
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+
+
+class TestStatsAPI(TestBase):
+ mydir = TestBase.compute_mydir(__file__)
+
+ def setUp(self):
+ TestBase.setUp(self)
+
+ def test_stats_api(self):
+ self.build()
+ exe = self.getBuildArtifact("a.out")
+ target = self.dbg.CreateTarget(exe)
+ stats = target.GetStatistics()
+ stream = lldb.SBStream()
+ res = stats.GetAsJSON(stream)
+ stats_json = sorted(json.loads(stream.GetData()))
+ self.assertEqual(len(stats_json), 4)
+ self.assertEqual(stats_json[0], "Number of expr evaluation failures")
+ self.assertEqual(stats_json[1], "Number of expr evaluation successes")
+ self.assertEqual(stats_json[2], "Number of frame var failures")
+ self.assertEqual(stats_json[3], "Number of frame var successes")
Added: lldb/trunk/packages/Python/lldbsuite/test/functionalities/stats_api/main.c
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/stats_api/main.c?rev=330165&view=auto
==============================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/functionalities/stats_api/main.c (added)
+++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/stats_api/main.c Mon Apr 16 15:55:34 2018
@@ -0,0 +1,3 @@
+int main(void) {
+ return 0;
+}
Modified: lldb/trunk/scripts/interface/SBTarget.i
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/scripts/interface/SBTarget.i?rev=330165&r1=330164&r2=330165&view=diff
==============================================================================
--- lldb/trunk/scripts/interface/SBTarget.i (original)
+++ lldb/trunk/scripts/interface/SBTarget.i Mon Apr 16 15:55:34 2018
@@ -915,6 +915,8 @@ public:
void
SetLaunchInfo (const lldb::SBLaunchInfo &launch_info);
+ lldb::SBStructuredData GetStatistics();
+
bool
operator == (const lldb::SBTarget &rhs) const;
Modified: lldb/trunk/source/API/SBTarget.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/SBTarget.cpp?rev=330165&r1=330164&r2=330165&view=diff
==============================================================================
--- lldb/trunk/source/API/SBTarget.cpp (original)
+++ lldb/trunk/source/API/SBTarget.cpp Mon Apr 16 15:55:34 2018
@@ -23,6 +23,7 @@
#include "lldb/API/SBSourceManager.h"
#include "lldb/API/SBStream.h"
#include "lldb/API/SBStringList.h"
+#include "lldb/API/SBStructuredData.h"
#include "lldb/API/SBSymbolContextList.h"
#include "lldb/Breakpoint/BreakpointID.h"
#include "lldb/Breakpoint/BreakpointIDList.h"
@@ -38,6 +39,7 @@
#include "lldb/Core/STLUtils.h"
#include "lldb/Core/SearchFilter.h"
#include "lldb/Core/Section.h"
+#include "lldb/Core/StructuredDataImpl.h"
#include "lldb/Core/ValueObjectConstResult.h"
#include "lldb/Core/ValueObjectList.h"
#include "lldb/Core/ValueObjectVariable.h"
@@ -181,6 +183,25 @@ SBDebugger SBTarget::GetDebugger() const
return debugger;
}
+SBStructuredData SBTarget::GetStatistics() {
+ SBStructuredData data;
+ TargetSP target_sp(GetSP());
+ if (!target_sp)
+ return data;
+
+ auto stats_up = llvm::make_unique<StructuredData::Dictionary>();
+ int i = 0;
+ for (auto &Entry : target_sp->GetStatistics()) {
+ std::string Desc = lldb_private::GetStatDescription(
+ static_cast<lldb_private::StatisticKind>(i));
+ stats_up->AddIntegerItem(Desc, Entry);
+ i += 1;
+ }
+
+ data.m_impl_up->SetObjectSP(std::move(stats_up));
+ return data;
+}
+
SBProcess SBTarget::LoadCore(const char *core_file) {
SBProcess sb_process;
TargetSP target_sp(GetSP());
More information about the lldb-commits
mailing list