llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-lldb Author: John Harrison (ashgti) <details> <summary>Changes</summary> I noticed this while debugging some unit tests that the logs occasionally would intersperse two log statements. Previously, it was possible for a log statement to have two messages interspersed since the timestamp and log statement were two different writes to the log stream. Instead, combine the logging into a single buffer first before printing. --- Full diff: https://github.com/llvm/llvm-project/pull/131916.diff 1 Files Affected: - (modified) lldb/tools/lldb-dap/DAPLog.h (+13-6) ``````````diff diff --git a/lldb/tools/lldb-dap/DAPLog.h b/lldb/tools/lldb-dap/DAPLog.h index 75a0a7d63a4f1..2574506739fea 100644 --- a/lldb/tools/lldb-dap/DAPLog.h +++ b/lldb/tools/lldb-dap/DAPLog.h @@ -23,8 +23,12 @@ if (log_private) { \ ::std::chrono::duration<double> now{ \ ::std::chrono::system_clock::now().time_since_epoch()}; \ - *log_private << ::llvm::formatv("{0:f9} ", now.count()).str() \ - << ::llvm::formatv(__VA_ARGS__).str() << std::endl; \ + ::std::string out; \ + ::llvm::raw_string_ostream os(out); \ + os << ::llvm::formatv("{0:f9} ", now.count()).str() \ + << ::llvm::formatv(__VA_ARGS__).str() << "\n"; \ + *log_private << out; \ + log_private->flush(); \ } \ } while (0) @@ -37,10 +41,13 @@ if (log_private && error_private) { \ ::std::chrono::duration<double> now{ \ std::chrono::system_clock::now().time_since_epoch()}; \ - *log_private << ::llvm::formatv("{0:f9} ", now.count()).str() \ - << ::lldb_dap::FormatError(::std::move(error_private), \ - __VA_ARGS__) \ - << std::endl; \ + ::std::string out; \ + ::llvm::raw_string_ostream os(out); \ + os << ::llvm::formatv("{0:f9} ", now.count()).str() \ + << ::lldb_dap::FormatError(::std::move(error_private), __VA_ARGS__) \ + << "\n"; \ + *log_private << out; \ + log_private->flush(); \ } else \ ::llvm::consumeError(::std::move(error_private)); \ } while (0) `````````` </details> https://github.com/llvm/llvm-project/pull/131916 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits