summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lldb/include/lldb/Utility/ReproducerInstrumentation.h20
-rw-r--r--lldb/packages/Python/lldbsuite/test/api/log/TestAPILog.py48
2 files changed, 58 insertions, 10 deletions
diff --git a/lldb/include/lldb/Utility/ReproducerInstrumentation.h b/lldb/include/lldb/Utility/ReproducerInstrumentation.h
index 9be632ec6a9..2151708ff4f 100644
--- a/lldb/include/lldb/Utility/ReproducerInstrumentation.h
+++ b/lldb/include/lldb/Utility/ReproducerInstrumentation.h
@@ -40,7 +40,7 @@ inline void stringify_append(llvm::raw_string_ostream &ss, const T *t) {
template <>
inline void stringify_append<char>(llvm::raw_string_ostream &ss,
const char *t) {
- ss << t;
+ ss << '\"' << t << '\"';
}
template <typename Head>
@@ -105,8 +105,8 @@ template <typename... Ts> inline std::string stringify_args(const Ts &... ts) {
}
#define LLDB_RECORD_METHOD(Result, Class, Method, Signature, ...) \
- lldb_private::repro::Recorder sb_recorder(LLVM_PRETTY_FUNCTION, \
- stringify_args(__VA_ARGS__)); \
+ lldb_private::repro::Recorder sb_recorder( \
+ LLVM_PRETTY_FUNCTION, stringify_args(*this, __VA_ARGS__)); \
if (lldb_private::repro::InstrumentationData data = \
LLDB_GET_INSTRUMENTATION_DATA()) { \
sb_recorder.Record( \
@@ -117,8 +117,8 @@ template <typename... Ts> inline std::string stringify_args(const Ts &... ts) {
}
#define LLDB_RECORD_METHOD_CONST(Result, Class, Method, Signature, ...) \
- lldb_private::repro::Recorder sb_recorder(LLVM_PRETTY_FUNCTION, \
- stringify_args(__VA_ARGS__)); \
+ lldb_private::repro::Recorder sb_recorder( \
+ LLVM_PRETTY_FUNCTION, stringify_args(*this, __VA_ARGS__)); \
if (lldb_private::repro::InstrumentationData data = \
LLDB_GET_INSTRUMENTATION_DATA()) { \
sb_recorder.Record( \
@@ -129,7 +129,8 @@ template <typename... Ts> inline std::string stringify_args(const Ts &... ts) {
}
#define LLDB_RECORD_METHOD_NO_ARGS(Result, Class, Method) \
- lldb_private::repro::Recorder sb_recorder(LLVM_PRETTY_FUNCTION); \
+ lldb_private::repro::Recorder sb_recorder(LLVM_PRETTY_FUNCTION, \
+ stringify_args(*this)); \
if (lldb_private::repro::InstrumentationData data = \
LLDB_GET_INSTRUMENTATION_DATA()) { \
sb_recorder.Record(data.GetSerializer(), data.GetRegistry(), \
@@ -139,7 +140,8 @@ template <typename... Ts> inline std::string stringify_args(const Ts &... ts) {
}
#define LLDB_RECORD_METHOD_CONST_NO_ARGS(Result, Class, Method) \
- lldb_private::repro::Recorder sb_recorder(LLVM_PRETTY_FUNCTION); \
+ lldb_private::repro::Recorder sb_recorder(LLVM_PRETTY_FUNCTION, \
+ stringify_args(*this)); \
if (lldb_private::repro::InstrumentationData data = \
LLDB_GET_INSTRUMENTATION_DATA()) { \
sb_recorder.Record( \
@@ -542,9 +544,7 @@ public:
SerializeAll(tail...);
}
- void SerializeAll() {
- m_stream.flush();
- }
+ void SerializeAll() { m_stream.flush(); }
private:
/// Serialize pointers. We need to differentiate between pointers to
diff --git a/lldb/packages/Python/lldbsuite/test/api/log/TestAPILog.py b/lldb/packages/Python/lldbsuite/test/api/log/TestAPILog.py
new file mode 100644
index 00000000000..450d62029d4
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/api/log/TestAPILog.py
@@ -0,0 +1,48 @@
+"""
+Test API logging.
+"""
+
+import re
+
+import lldb
+import lldbsuite.test.lldbutil as lldbutil
+from lldbsuite.test.lldbtest import *
+
+
+class APILogTestCase(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ NO_DEBUG_INFO_TESTCASE = True
+
+ def test_api_log(self):
+ """Test API logging"""
+ logfile = os.path.join(self.getBuildDir(), "api-log.txt")
+
+ def cleanup():
+ if os.path.exists(logfile):
+ os.unlink(logfile)
+
+ self.addTearDownHook(cleanup)
+ self.expect("log enable lldb api -f {}".format(logfile))
+
+ self.dbg.SetDefaultArchitecture(None)
+ self.dbg.GetScriptingLanguage(None)
+ target = self.dbg.CreateTarget(None)
+
+ print(logfile)
+ with open(logfile, 'r') as f:
+ log = f.read()
+
+ # Find the debugger addr.
+ debugger_addr = re.findall(
+ r"lldb::SBDebugger::GetScriptingLanguage\(const char \*\) \(0x([0-9a-fA-F]+),",
+ log)[0]
+
+ get_scripting_language = 'lldb::ScriptLanguage lldb::SBDebugger::GetScriptingLanguage(const char *) (0x{}, "")'.format(
+ debugger_addr)
+ create_target = 'lldb::SBTarget lldb::SBDebugger::CreateTarget(const char *) (0x{}, "")'.format(
+ debugger_addr)
+
+ self.assertTrue(get_scripting_language in log)
+ self.assertTrue(create_target in log)
OpenPOWER on IntegriCloud