aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/Commands/CommandObjectLog.cpp
diff options
context:
space:
mode:
authorJim Ingham <jingham@apple.com>2011-01-24 04:09:25 +0000
committerJim Ingham <jingham@apple.com>2011-01-24 04:09:25 +0000
commit9f35921baa03f55d501d9e7ed26cb80b9fcae8c0 (patch)
tree2e638e72810d1618585c4952fc4f41022efe0425 /lldb/source/Commands/CommandObjectLog.cpp
parent3bbfb7f64b2916eb34de2b9daff0ade5a96a870b (diff)
downloadllvm-9f35921baa03f55d501d9e7ed26cb80b9fcae8c0.zip
llvm-9f35921baa03f55d501d9e7ed26cb80b9fcae8c0.tar.gz
llvm-9f35921baa03f55d501d9e7ed26cb80b9fcae8c0.tar.bz2
Add a method to StreamFile to line buffer the file. Use that in "log enable -f file" to line buffer the log output.
llvm-svn: 124107
Diffstat (limited to 'lldb/source/Commands/CommandObjectLog.cpp')
-rw-r--r--lldb/source/Commands/CommandObjectLog.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/lldb/source/Commands/CommandObjectLog.cpp b/lldb/source/Commands/CommandObjectLog.cpp
index 7bd84b3..723a501 100644
--- a/lldb/source/Commands/CommandObjectLog.cpp
+++ b/lldb/source/Commands/CommandObjectLog.cpp
@@ -113,23 +113,30 @@ public:
std::string channel(args.GetArgumentAtIndex(0));
args.Shift (); // Shift off the channel
StreamSP log_stream_sp;
-
+ StreamFile *log_file_ptr = NULL; // This will get put in the log_stream_sp, no need to free it.
if (m_options.log_file.empty())
{
- log_stream_sp.reset(new StreamFile(m_interpreter.GetDebugger().GetOutputFileHandle()));
+ log_file_ptr = new StreamFile(m_interpreter.GetDebugger().GetOutputFileHandle());
+ log_stream_sp.reset(log_file_ptr);
}
else
{
LogStreamMap::iterator pos = m_log_streams.find(m_options.log_file);
if (pos == m_log_streams.end())
{
- log_stream_sp.reset (new StreamFile (m_options.log_file.c_str(), "w"));
+ log_file_ptr = new StreamFile (m_options.log_file.c_str(), "w");
+ log_stream_sp.reset (log_file_ptr);
m_log_streams[m_options.log_file] = log_stream_sp;
}
else
log_stream_sp = pos->second;
}
assert (log_stream_sp.get());
+
+ // If we ended up making a StreamFile for log output, line buffer it.
+ if (log_file_ptr != NULL)
+ log_file_ptr->SetLineBuffered();
+
uint32_t log_options = m_options.log_options;
if (log_options == 0)
log_options = LLDB_LOG_OPTION_PREPEND_THREAD_NAME | LLDB_LOG_OPTION_THREADSAFE;