[Lldb-commits] [lldb] 620f5fa - [lldb/Reproducer] Include result in recording statements
Jonas Devlieghere via lldb-commits
lldb-commits at lists.llvm.org
Tue Jan 28 15:03:20 PST 2020
Author: Jonas Devlieghere
Date: 2020-01-28T15:03:13-08:00
New Revision: 620f5faf1f340e594bd9cac39a64d9236a324fb9
URL: https://github.com/llvm/llvm-project/commit/620f5faf1f340e594bd9cac39a64d9236a324fb9
DIFF: https://github.com/llvm/llvm-project/commit/620f5faf1f340e594bd9cac39a64d9236a324fb9.diff
LOG: [lldb/Reproducer] Include result in recording statements
Include the return value in the recording log statements. This helps
diagnose uninstrumented (copy assignment) constructors.
Added:
Modified:
lldb/include/lldb/Utility/ReproducerInstrumentation.h
Removed:
################################################################################
diff --git a/lldb/include/lldb/Utility/ReproducerInstrumentation.h b/lldb/include/lldb/Utility/ReproducerInstrumentation.h
index eed3c1bfdb95..91420a147834 100644
--- a/lldb/include/lldb/Utility/ReproducerInstrumentation.h
+++ b/lldb/include/lldb/Utility/ReproducerInstrumentation.h
@@ -43,6 +43,12 @@ inline void stringify_append<char>(llvm::raw_string_ostream &ss,
ss << '\"' << t << '\"';
}
+template <>
+inline void stringify_append<nullptr_t>(llvm::raw_string_ostream &ss,
+ const nullptr_t &t) {
+ ss << "\"nullptr\"";
+}
+
template <typename Head>
inline void stringify_helper(llvm::raw_string_ostream &ss, const Head &head) {
stringify_append(ss, head);
@@ -648,10 +654,6 @@ class Recorder {
unsigned id = registry.GetID(uintptr_t(f));
-#ifdef LLDB_REPRO_INSTR_TRACE
- Log(id);
-#endif
-
serializer.SerializeAll(id);
serializer.SerializeAll(args...);
@@ -662,6 +664,10 @@ class Recorder {
serializer.SerializeAll(0);
m_result_recorded = true;
}
+
+#ifdef LLDB_REPRO_INSTR_TRACE
+ Log(id, m_result_recorded);
+#endif
}
/// Records a single function call.
@@ -674,16 +680,16 @@ class Recorder {
unsigned id = registry.GetID(uintptr_t(f));
-#ifdef LLDB_REPRO_INSTR_TRACE
- Log(id);
-#endif
-
serializer.SerializeAll(id);
serializer.SerializeAll(args...);
// Record result.
serializer.SerializeAll(0);
m_result_recorded = true;
+
+#ifdef LLDB_REPRO_INSTR_TRACE
+ Log(id, true);
+#endif
}
/// Record the result of a function call.
@@ -693,6 +699,9 @@ class Recorder {
assert(!m_result_recorded);
m_serializer->SerializeAll(r);
m_result_recorded = true;
+#ifdef LLDB_REPRO_INSTR_TRACE
+ llvm::errs() << " -> " << stringify_args(r) << '\n';
+#endif
}
return std::forward<Result>(r);
}
@@ -706,9 +715,11 @@ class Recorder {
bool ShouldCapture() { return m_local_boundary; }
#ifdef LLDB_REPRO_INSTR_TRACE
- void Log(unsigned id) {
+ void Log(unsigned id, bool newline) {
llvm::errs() << "Recording " << id << ": " << m_pretty_func << " ("
- << m_pretty_args << ")\n";
+ << m_pretty_args << ")";
+ if (newline)
+ llvm::errs() << '\n';
}
#endif
More information about the lldb-commits
mailing list