[Lldb-commits] [lldb] 7ac9443 - [lldb/Reproducers] Change record logging to mirror replay logging

Jonas Devlieghere via lldb-commits lldb-commits at lists.llvm.org
Tue Feb 4 16:28:46 PST 2020


Author: Jonas Devlieghere
Date: 2020-02-04T16:24:38-08:00
New Revision: 7ac9443002949a01c992691760588eaaf88e4f41

URL: https://github.com/llvm/llvm-project/commit/7ac9443002949a01c992691760588eaaf88e4f41
DIFF: https://github.com/llvm/llvm-project/commit/7ac9443002949a01c992691760588eaaf88e4f41.diff

LOG: [lldb/Reproducers] Change record logging to mirror replay logging

Pretty printing the return value, although a good idea in theory, turned
out to be more confusing than anything else because they require
printing the log statement after the arguments and resulting value have
been serialized.

This changes the logging to behave more like how deserialization is
traced, although a bit more verbose because some of the serializers are
are calling each other.

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 2f8de5cbd3db..0bb12047f1ff 100644
--- a/lldb/include/lldb/Utility/ReproducerInstrumentation.h
+++ b/lldb/include/lldb/Utility/ReproducerInstrumentation.h
@@ -571,6 +571,10 @@ class Serializer {
   /// fundamental types (in which case we serialize its value) and pointer to
   /// objects (in which case we serialize their index).
   template <typename T> void Serialize(T *t) {
+#ifdef LLDB_REPRO_INSTR_TRACE
+    llvm::errs() << "Serializing with " << LLVM_PRETTY_FUNCTION << " -> "
+                 << stringify_args(t) << "\n";
+#endif
     if (std::is_fundamental<T>::value) {
       Serialize(*t);
     } else {
@@ -583,6 +587,10 @@ class Serializer {
   /// fundamental types (in which case we serialize its value) and references
   /// to objects (in which case we serialize their index).
   template <typename T> void Serialize(T &t) {
+#ifdef LLDB_REPRO_INSTR_TRACE
+    llvm::errs() << "Serializing with " << LLVM_PRETTY_FUNCTION << " -> "
+                 << stringify_args(t) << "\n";
+#endif
     if (is_trivially_serializable<T>::value) {
       m_stream.write(reinterpret_cast<const char *>(&t), sizeof(T));
     } else {
@@ -597,6 +605,10 @@ class Serializer {
   }
 
   void Serialize(const char *t) {
+#ifdef LLDB_REPRO_INSTR_TRACE
+    llvm::errs() << "Serializing with " << LLVM_PRETTY_FUNCTION << " -> "
+                 << stringify_args(t) << "\n";
+#endif
     const size_t size = t ? strlen(t) : std::numeric_limits<size_t>::max();
     Serialize(size);
     if (t) {
@@ -673,6 +685,10 @@ class Recorder {
 
     unsigned id = registry.GetID(uintptr_t(f));
 
+#ifdef LLDB_REPRO_INSTR_TRACE
+    Log(id);
+#endif
+
     serializer.SerializeAll(id);
     serializer.SerializeAll(args...);
 
@@ -684,9 +700,6 @@ class Recorder {
       m_result_recorded = true;
     }
 
-#ifdef LLDB_REPRO_INSTR_TRACE
-    Log(id, m_result_recorded);
-#endif
   }
 
   /// Records a single function call.
@@ -699,6 +712,10 @@ class Recorder {
 
     unsigned id = registry.GetID(uintptr_t(f));
 
+#ifdef LLDB_REPRO_INSTR_TRACE
+    Log(id);
+#endif
+
     serializer.SerializeAll(id);
     serializer.SerializeAll(args...);
 
@@ -706,9 +723,6 @@ class Recorder {
     serializer.SerializeAll(0);
     m_result_recorded = true;
 
-#ifdef LLDB_REPRO_INSTR_TRACE
-    Log(id, true);
-#endif
   }
 
   /// Record the result of a function call.
@@ -726,9 +740,6 @@ 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);
   }
@@ -742,11 +753,9 @@ class Recorder {
   bool ShouldCapture() { return m_local_boundary; }
 
 #ifdef LLDB_REPRO_INSTR_TRACE
-  void Log(unsigned id, bool newline) {
+  void Log(unsigned id) {
     llvm::errs() << "Recording " << id << ": " << m_pretty_func << " ("
-                 << m_pretty_args << ")";
-    if (newline)
-      llvm::errs() << '\n';
+                 << m_pretty_args << ")\n";
   }
 #endif
 


        


More information about the lldb-commits mailing list