From e67afe15b43e2e788dfef60c2d5ff7cda822922a Mon Sep 17 00:00:00 2001 From: Caroline Tice Date: Tue, 3 May 2011 21:21:50 +0000 Subject: Pre-load the Python script interpreter with the following convenience variables (from the ExecutionContext) each time it is entered: lldb.debugger, lldb.target, lldb.process, lldb.thread, lldb.frame. If a frame (or thread, process, etc) does not currently exist, the variable contains the Python value 'None'. llvm-svn: 130792 --- .../source/Interpreter/ScriptInterpreterPython.cpp | 41 ++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'lldb/source/Interpreter/ScriptInterpreterPython.cpp') diff --git a/lldb/source/Interpreter/ScriptInterpreterPython.cpp b/lldb/source/Interpreter/ScriptInterpreterPython.cpp index 47302be0ee4..373699127d7 100644 --- a/lldb/source/Interpreter/ScriptInterpreterPython.cpp +++ b/lldb/source/Interpreter/ScriptInterpreterPython.cpp @@ -377,8 +377,49 @@ ScriptInterpreterPython::EnterSession () run_string.Printf ("run_one_line (%s, 'lldb.debugger_unique_id = %d')", m_dictionary_name.c_str(), GetCommandInterpreter().GetDebugger().GetID()); PyRun_SimpleString (run_string.GetData()); + run_string.Clear(); + + + run_string.Printf ("run_one_line (%s, 'lldb.debugger = lldb.SBDebugger.FindDebuggerWithID (%d)')", + m_dictionary_name.c_str(), + GetCommandInterpreter().GetDebugger().GetID()); + PyRun_SimpleString (run_string.GetData()); + run_string.Clear(); + ExecutionContext exe_ctx = m_interpreter.GetDebugger().GetSelectedExecutionContext(); + + if (exe_ctx.target) + run_string.Printf ("run_one_line (%s, 'lldb.target = lldb.debugger.GetSelectedTarget()')", + m_dictionary_name.c_str()); + else + run_string.Printf ("run_one_line (%s, 'lldb.target = None')", m_dictionary_name.c_str()); + PyRun_SimpleString (run_string.GetData()); + run_string.Clear(); + + if (exe_ctx.process) + run_string.Printf ("run_one_line (%s, 'lldb.process = lldb.target.GetProcess()')", m_dictionary_name.c_str()); + else + run_string.Printf ("run_one_line (%s, 'lldb.process = None')", m_dictionary_name.c_str()); + PyRun_SimpleString (run_string.GetData()); + run_string.Clear(); + + if (exe_ctx.thread) + run_string.Printf ("run_one_line (%s, 'lldb.thread = lldb.process.GetSelectedThread ()')", + m_dictionary_name.c_str()); + else + run_string.Printf ("run_one_line (%s, 'lldb.thread = None')", m_dictionary_name.c_str()); + PyRun_SimpleString (run_string.GetData()); + run_string.Clear(); + + if (exe_ctx.frame) + run_string.Printf ("run_one_line (%s, 'lldb.frame = lldb.thread.GetSelectedFrame ()')", + m_dictionary_name.c_str()); + else + run_string.Printf ("run_one_line (%s, 'lldb.frame = None')", m_dictionary_name.c_str()); + PyRun_SimpleString (run_string.GetData()); + run_string.Clear(); + PyObject *sysmod = PyImport_AddModule ("sys"); PyObject *sysdict = PyModule_GetDict (sysmod); -- cgit v1.2.3