forked from OSchip/llvm-project
Make SBDebugger.RunCommandInterpreter callable from Python.
Authored by: Lukas Boger Differential Revision: https://reviews.llvm.org/D61602 llvm-svn: 360730
This commit is contained in:
parent
e8f83befd5
commit
7d7b788fb1
|
@ -0,0 +1,38 @@
|
||||||
|
"""Test the RunCommandInterpreter API."""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import lldb
|
||||||
|
from lldbsuite.test.decorators import *
|
||||||
|
from lldbsuite.test.lldbtest import *
|
||||||
|
|
||||||
|
class CommandRunInterpreterAPICase(TestBase):
|
||||||
|
|
||||||
|
mydir = TestBase.compute_mydir(__file__)
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
TestBase.setUp(self)
|
||||||
|
|
||||||
|
self.stdin_path = self.getBuildArtifact("stdin.txt")
|
||||||
|
|
||||||
|
with open(self.stdin_path, 'w') as input_handle:
|
||||||
|
input_handle.write("nonexistingcommand\nquit")
|
||||||
|
|
||||||
|
with open(self.stdin_path, 'r') as input_handle:
|
||||||
|
self.dbg.SetInputFileHandle(input_handle, False)
|
||||||
|
|
||||||
|
# No need to track the output
|
||||||
|
devnull = open(os.devnull, 'w')
|
||||||
|
self.dbg.SetOutputFileHandle(devnull, False)
|
||||||
|
self.dbg.SetErrorFileHandle(devnull, False)
|
||||||
|
|
||||||
|
@add_test_categories(['pyapi'])
|
||||||
|
def test_run_session_with_error_and_quit(self):
|
||||||
|
"""Run non-existing and quit command returns appropriate values"""
|
||||||
|
|
||||||
|
n_errors, quit_requested, has_crashed = self.dbg.RunCommandInterpreter(
|
||||||
|
True, False, lldb.SBCommandInterpreterRunOptions(), 0, False,
|
||||||
|
False)
|
||||||
|
|
||||||
|
self.assertGreater(n_errors, 0)
|
||||||
|
self.assertTrue(quit_requested)
|
||||||
|
self.assertFalse(has_crashed)
|
|
@ -423,6 +423,32 @@ public:
|
||||||
lldb::SBTypeSynthetic
|
lldb::SBTypeSynthetic
|
||||||
GetSyntheticForType (lldb::SBTypeNameSpecifier);
|
GetSyntheticForType (lldb::SBTypeNameSpecifier);
|
||||||
|
|
||||||
|
%feature("docstring",
|
||||||
|
"Launch a command interpreter session. Commands are read from standard input or
|
||||||
|
from the input handle specified for the debugger object. Output/errors are
|
||||||
|
similarly redirected to standard output/error or the configured handles.
|
||||||
|
|
||||||
|
@param[in] auto_handle_events If true, automatically handle resulting events.
|
||||||
|
@param[in] spawn_thread If true, start a new thread for IO handling.
|
||||||
|
@param[in] options Parameter collection of type SBCommandInterpreterRunOptions.
|
||||||
|
@param[in] num_errors Initial error counter.
|
||||||
|
@param[in] quit_requested Initial quit request flag.
|
||||||
|
@param[in] stopped_for_crash Initial crash flag.
|
||||||
|
|
||||||
|
@return
|
||||||
|
A tuple with the number of errors encountered by the interpreter, a boolean
|
||||||
|
indicating whether quitting the interpreter was requested and another boolean
|
||||||
|
set to True in case of a crash.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
# Start an interactive lldb session from a script (with a valid debugger object
|
||||||
|
# created beforehand):
|
||||||
|
n_errors, quit_requested, has_crashed = debugger.RunCommandInterpreter(True,
|
||||||
|
False, lldb.SBCommandInterpreterRunOptions(), 0, False, False)") RunCommandInterpreter;
|
||||||
|
%apply int& INOUT { int& num_errors };
|
||||||
|
%apply bool& INOUT { bool& quit_requested };
|
||||||
|
%apply bool& INOUT { bool& stopped_for_crash };
|
||||||
void
|
void
|
||||||
RunCommandInterpreter (bool auto_handle_events,
|
RunCommandInterpreter (bool auto_handle_events,
|
||||||
bool spawn_thread,
|
bool spawn_thread,
|
||||||
|
|
Loading…
Reference in New Issue