This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rGfe1874dd2dd9: [lldb/Interpreter] Add setting to set session
transcript save directory (authored by mib).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D105030/new/
https://reviews.llvm.org/D105030
Files:
lldb/include/lldb/Interpreter/CommandInterpreter.h
lldb/source/Interpreter/CommandInterpreter.cpp
lldb/source/Interpreter/InterpreterProperties.td
lldb/test/API/commands/session/save/TestSessionSave.py
Index: lldb/test/API/commands/session/save/TestSessionSave.py
===================================================================
--- lldb/test/API/commands/session/save/TestSessionSave.py
+++ lldb/test/API/commands/session/save/TestSessionSave.py
@@ -1,7 +1,7 @@
"""
Test the session save feature
"""
-
+import os
import lldb
from lldbsuite.test.decorators import *
from lldbsuite.test.lldbtest import *
@@ -72,3 +72,20 @@
lines = raw.splitlines()[:-1]
for line in lines:
self.assertIn(line, content)
+
+ td = tempfile.TemporaryDirectory()
+ res = lldb.SBCommandReturnObject()
+ interpreter.HandleCommand('settings set interpreter.save-session-directory ' + td.name, res)
+ self.assertTrue(res.Succeeded())
+
+ res = lldb.SBCommandReturnObject()
+ interpreter.HandleCommand('session save', res)
+ self.assertTrue(res.Succeeded())
+ raw += self.raw_transcript_builder(cmd, res)
+
+ with open(os.path.join(td.name, os.listdir(td.name)[0]), "r") as file:
+ content = file.read()
+ # Exclude last line, since session won't record it's own output
+ lines = raw.splitlines()[:-1]
+ for line in lines:
+ self.assertIn(line, content)
Index: lldb/source/Interpreter/InterpreterProperties.td
===================================================================
--- lldb/source/Interpreter/InterpreterProperties.td
+++ lldb/source/Interpreter/InterpreterProperties.td
@@ -13,6 +13,9 @@
Global,
DefaultFalse,
Desc<"If true, LLDB will save the session's transcripts before quitting.">;
+ def SaveSessionDirectory: Property<"save-session-directory", "FileSpec">,
+ DefaultStringValue<"">,
+ Desc<"A path where LLDB will save the session's transcripts. This is particularly useful when you can't set the session file, for example when using `save-session-on-quit`.">;
def StopCmdSourceOnError: Property<"stop-command-source-on-error", "Boolean">,
Global,
DefaultTrue,
Index: lldb/source/Interpreter/CommandInterpreter.cpp
===================================================================
--- lldb/source/Interpreter/CommandInterpreter.cpp
+++ lldb/source/Interpreter/CommandInterpreter.cpp
@@ -160,6 +160,16 @@
m_collection_sp->SetPropertyAtIndexAsBoolean(nullptr, idx, enable);
}
+FileSpec CommandInterpreter::GetSaveSessionDirectory() const {
+ const uint32_t idx = ePropertySaveSessionDirectory;
+ return m_collection_sp->GetPropertyAtIndexAsFileSpec(nullptr, idx);
+}
+
+void CommandInterpreter::SetSaveSessionDirectory(llvm::StringRef path) {
+ const uint32_t idx = ePropertySaveSessionDirectory;
+ m_collection_sp->SetPropertyAtIndexAsString(nullptr, idx, path);
+}
+
bool CommandInterpreter::GetEchoCommands() const {
const uint32_t idx = ePropertyEchoCommands;
return m_collection_sp->GetPropertyAtIndexAsBoolean(
@@ -2925,9 +2935,15 @@
std::string now = llvm::to_string(std::chrono::system_clock::now());
std::replace(now.begin(), now.end(), ' ', '_');
const std::string file_name = "lldb_session_" + now + ".log";
- FileSpec tmp = HostInfo::GetGlobalTempDir();
- tmp.AppendPathComponent(file_name);
- output_file = tmp.GetPath();
+
+ FileSpec save_location = GetSaveSessionDirectory();
+
+ if (!save_location)
+ save_location = HostInfo::GetGlobalTempDir();
+
+ FileSystem::Instance().Resolve(save_location);
+ save_location.AppendPathComponent(file_name);
+ output_file = save_location.GetPath();
}
auto error_out = [&](llvm::StringRef error_message, std::string description) {
Index: lldb/include/lldb/Interpreter/CommandInterpreter.h
===================================================================
--- lldb/include/lldb/Interpreter/CommandInterpreter.h
+++ lldb/include/lldb/Interpreter/CommandInterpreter.h
@@ -493,6 +493,9 @@
bool GetSaveSessionOnQuit() const;
void SetSaveSessionOnQuit(bool enable);
+ FileSpec GetSaveSessionDirectory() const;
+ void SetSaveSessionDirectory(llvm::StringRef path);
+
bool GetEchoCommands() const;
void SetEchoCommands(bool enable);
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits