[Lldb-commits] [lldb] 33e3b07 - [lldb] Include thread id in the reproducer trace (NFC)

Jonas Devlieghere via lldb-commits lldb-commits at lists.llvm.org
Mon Dec 7 20:35:41 PST 2020


Author: Jonas Devlieghere
Date: 2020-12-07T20:35:34-08:00
New Revision: 33e3b07af3ce9595f49c75a8af559bdec5cc19fa

URL: https://github.com/llvm/llvm-project/commit/33e3b07af3ce9595f49c75a8af559bdec5cc19fa
DIFF: https://github.com/llvm/llvm-project/commit/33e3b07af3ce9595f49c75a8af559bdec5cc19fa.diff

LOG: [lldb] Include thread id in the reproducer trace (NFC)

Include the current thread ID in the reproducer trace during
capture/recording.

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 5fc33ad1a17b..8e319d749231 100644
--- a/lldb/include/lldb/Utility/ReproducerInstrumentation.h
+++ b/lldb/include/lldb/Utility/ReproducerInstrumentation.h
@@ -17,6 +17,7 @@
 #include "llvm/Support/ErrorHandling.h"
 
 #include <map>
+#include <thread>
 #include <type_traits>
 
 template <typename T,
@@ -78,6 +79,13 @@ template <typename... Ts> inline std::string stringify_args(const Ts &... ts) {
 // is initialized or enabled.
 // #define LLDB_REPRO_INSTR_TRACE
 
+#ifdef LLDB_REPRO_INSTR_TRACE
+inline llvm::raw_ostream &this_thread_id() {
+  size_t tid = std::hash<std::thread::id>{}(std::this_thread::get_id());
+  return llvm::errs().write_hex(tid) << " :: ";
+}
+#endif
+
 #define LLDB_REGISTER_CONSTRUCTOR(Class, Signature)                            \
   R.Register<Class * Signature>(&construct<Class Signature>::record, "",       \
                                 #Class, #Class, #Signature)
@@ -600,8 +608,8 @@ class Serializer {
   /// 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";
+    this_thread_id() << "Serializing with " << LLVM_PRETTY_FUNCTION << " -> "
+                     << stringify_args(t) << "\n";
 #endif
     if (std::is_fundamental<T>::value) {
       Serialize(*t);
@@ -616,8 +624,8 @@ class Serializer {
   /// 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";
+    this_thread_id() << "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));
@@ -637,8 +645,8 @@ class Serializer {
 
   void Serialize(const char *t) {
 #ifdef LLDB_REPRO_INSTR_TRACE
-    llvm::errs() << "Serializing with " << LLVM_PRETTY_FUNCTION << " -> "
-                 << stringify_args(t) << "\n";
+    this_thread_id() << "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);
@@ -842,8 +850,8 @@ class Recorder {
 
 #ifdef LLDB_REPRO_INSTR_TRACE
   void Log(unsigned id) {
-    llvm::errs() << "Recording " << id << ": " << m_pretty_func << " ("
-                 << m_pretty_args << ")\n";
+    this_thread_id() << "Recording " << id << ": " << m_pretty_func << " ("
+                     << m_pretty_args << ")\n";
   }
 #endif
 


        


More information about the lldb-commits mailing list