LLDB mainline
lldb_private::ScriptInterpreterPythonImpl Class Reference

#include <ScriptInterpreterPythonImpl.h>

Inheritance diagram for lldb_private::ScriptInterpreterPythonImpl:
[legend]

Classes

class  Locker
class  SessionIORedirect
 A Python sys.stdout/stderr file backed by a pipe whose read end is drained by a reader thread that writes to the debugger's terminal under the output lock (Debugger::PrintAsync). More...
class  SynchronicityHandler

Public Types

enum class  AddLocation { Beginning , End }
enum  ActiveIOHandler { eIOHandlerNone , eIOHandlerBreakpoint , eIOHandlerWatchpoint }
Public Types inherited from lldb_private::ScriptInterpreter
enum  ScriptReturnType {
  eScriptReturnTypeCharPtr , eScriptReturnTypeBool , eScriptReturnTypeShortInt , eScriptReturnTypeShortIntUnsigned ,
  eScriptReturnTypeInt , eScriptReturnTypeIntUnsigned , eScriptReturnTypeLongInt , eScriptReturnTypeLongIntUnsigned ,
  eScriptReturnTypeLongLong , eScriptReturnTypeLongLongUnsigned , eScriptReturnTypeFloat , eScriptReturnTypeDouble ,
  eScriptReturnTypeChar , eScriptReturnTypeCharStrOrNone , eScriptReturnTypeOpaqueObject
}
Public Types inherited from lldb_private::IOHandlerDelegate
enum class  Completion { None , LLDBCommand , Expression }

Public Member Functions

 ScriptInterpreterPythonImpl (Debugger &debugger)
 ~ScriptInterpreterPythonImpl () override
bool Interrupt () override
bool ExecuteOneLine (llvm::StringRef command, CommandReturnObject *result, const ExecuteScriptOptions &options=ExecuteScriptOptions()) override
void ExecuteInterpreterLoop () override
bool ExecuteOneLineWithReturn (llvm::StringRef in_string, ScriptInterpreter::ScriptReturnType return_type, void *ret_value, const ExecuteScriptOptions &options=ExecuteScriptOptions()) override
lldb_private::Status ExecuteMultipleLines (const char *in_string, const ExecuteScriptOptions &options=ExecuteScriptOptions()) override
Status ExportFunctionDefinitionToInterpreter (StringList &function_def) override
bool GenerateTypeScriptFunction (StringList &input, std::string &output, const void *name_token=nullptr) override
bool GenerateTypeSynthClass (StringList &input, std::string &output, const void *name_token=nullptr) override
bool GenerateTypeSynthClass (const char *oneliner, std::string &output, const void *name_token=nullptr) override
bool GenerateTypeScriptFunction (const char *oneliner, std::string &output, const void *name_token=nullptr) override
bool GenerateScriptAliasFunction (StringList &input, std::string &output) override
StructuredData::ObjectSP CreateSyntheticScriptedProvider (const char *class_name, lldb::ValueObjectSP valobj) override
StructuredData::ObjectSP CreateStructuredDataFromScriptObject (ScriptObject obj) override
lldb::ScriptedProcessInterfaceUP CreateScriptedProcessInterface () override
lldb::ScriptedHookInterfaceSP CreateScriptedHookInterface () override
lldb::ScriptedBreakpointInterfaceSP CreateScriptedBreakpointInterface () override
lldb::ScriptedStackFrameRecognizerInterfaceSP CreateScriptedStackFrameRecognizerInterface () override
lldb::ScriptedCommandInterfaceSP CreateScriptedCommandInterface () override
lldb::ScriptedStringSummaryInterfaceSP CreateScriptedStringSummaryInterface () override
lldb::ScriptedThreadInterfaceSP CreateScriptedThreadInterface () override
lldb::ScriptedFrameInterfaceSP CreateScriptedFrameInterface () override
lldb::ScriptedFrameProviderInterfaceSP CreateScriptedFrameProviderInterface () override
lldb::ScriptedThreadPlanInterfaceSP CreateScriptedThreadPlanInterface () override
lldb::OperatingSystemInterfaceSP CreateOperatingSystemInterface () override
StructuredData::ObjectSP LoadPluginModule (const FileSpec &file_spec, lldb_private::Status &error) override
StructuredData::DictionarySP GetDynamicSettings (StructuredData::ObjectSP plugin_module_sp, Target *target, const char *setting_name, lldb_private::Status &error) override
size_t CalculateNumChildren (const StructuredData::ObjectSP &implementor, uint32_t max) override
lldb::ValueObjectSP GetChildAtIndex (const StructuredData::ObjectSP &implementor, uint32_t idx) override
llvm::Expected< uint32_t > GetIndexOfChildWithName (const StructuredData::ObjectSP &implementor, const char *child_name) override
bool UpdateSynthProviderInstance (const StructuredData::ObjectSP &implementor) override
bool MightHaveChildrenSynthProviderInstance (const StructuredData::ObjectSP &implementor) override
lldb::ValueObjectSP GetSyntheticValue (const StructuredData::ObjectSP &implementor) override
ConstString GetSyntheticTypeName (const StructuredData::ObjectSP &implementor) override
bool RunScriptBasedCommand (const char *impl_function, llvm::StringRef args, ScriptedCommandSynchronicity synchronicity, lldb_private::CommandReturnObject &cmd_retobj, Status &error, const lldb_private::ExecutionContext &exe_ctx) override
Status GenerateFunction (const char *signature, const StringList &input, bool is_callback) override
Status GenerateBreakpointCommandCallbackData (StringList &input, std::string &output, bool has_extra_args, bool is_callback) override
bool GenerateWatchpointCommandCallbackData (StringList &input, std::string &output, bool is_callback) override
bool GetScriptedSummary (const char *function_name, lldb::ValueObjectSP valobj, StructuredData::ObjectSP &callee_wrapper_sp, const TypeSummaryOptions &options, std::string &retval) override
bool FormatterCallbackFunction (const char *function_name, lldb::TypeImplSP type_impl_sp) override
bool GetDocumentationForItem (const char *item, std::string &dest) override
 In Python, a special attribute doc contains the docstring for an object (function, method, class, ...) if any is defined Otherwise, the attribute's value is None.
bool CheckObjectExists (const char *name) override
bool RunScriptFormatKeyword (const char *impl_function, Process *process, std::string &output, Status &error) override
bool RunScriptFormatKeyword (const char *impl_function, Thread *thread, std::string &output, Status &error) override
bool RunScriptFormatKeyword (const char *impl_function, Target *target, std::string &output, Status &error) override
bool RunScriptFormatKeyword (const char *impl_function, StackFrame *frame, std::string &output, Status &error) override
bool RunScriptFormatKeyword (const char *impl_function, ValueObject *value, std::string &output, Status &error) override
bool LoadScriptingModule (const char *filename, const LoadScriptOptions &options, lldb_private::Status &error, StructuredData::ObjectSP *module_sp=nullptr, FileSpec extra_search_dir={}, lldb::TargetSP loaded_into_target_sp={}) override
bool IsReservedWord (const char *word) override
std::unique_ptr< ScriptInterpreterLockerAcquireInterpreterLock () override
void CollectDataForBreakpointCommandCallback (std::vector< std::reference_wrapper< BreakpointOptions > > &bp_options_vec, CommandReturnObject &result) override
void CollectDataForWatchpointCommandCallback (WatchpointOptions *wp_options, CommandReturnObject &result) override
Status SetBreakpointCommandCallback (BreakpointOptions &bp_options, const char *callback_body, bool is_callback) override
 Set the callback body text into the callback for the breakpoint.
Status SetBreakpointCommandCallbackFunction (BreakpointOptions &bp_options, const char *function_name, StructuredData::ObjectSP extra_args_sp) override
 Set a script function as the callback for the breakpoint.
Status SetBreakpointCommandCallback (BreakpointOptions &bp_options, std::unique_ptr< BreakpointOptions::CommandData > &data_up) override
 This one is for deserialization:
Status SetBreakpointCommandCallback (BreakpointOptions &bp_options, const char *command_body_text, StructuredData::ObjectSP extra_args_sp, bool uses_extra_args, bool is_callback)
void SetWatchpointCommandCallback (WatchpointOptions *wp_options, const char *user_input, bool is_callback) override
 Set a one-liner as the callback for the watchpoint.
const char * GetDictionaryName ()
PyThreadState * GetThreadState ()
void SetThreadState (PyThreadState *s)
void IOHandlerActivated (IOHandler &io_handler, bool interactive) override
void IOHandlerInputComplete (IOHandler &io_handler, std::string &data) override
 Called when a line or lines have been retrieved.
llvm::StringRef GetPluginName () override
bool EnterSession (uint16_t on_entry_flags, lldb::FileSP in, lldb::FileSP out, lldb::FileSP err)
void LeaveSession ()
uint32_t IsExecutingPython ()
uint32_t IncrementLockCount ()
uint32_t DecrementLockCount ()
python::PythonModuleGetMainModule ()
python::PythonDictionaryGetSessionDictionary ()
python::PythonDictionaryGetSysModuleDictionary ()
llvm::Expected< unsigned > GetMaxPositionalArgumentsForCallable (const llvm::StringRef &callable_name) override
bool GetEmbeddedInterpreterModuleObjects ()
bool SetStdHandle (lldb::FileSP file, const char *py_name, python::PythonObject &save_file, const char *mode, bool serialize_terminal_output)
 Point sys.
bool RedirectTerminalHandleThroughLock (const char *py_name, python::PythonObject &save_file, const char *mode, File &file)
 If file is the debugger's own terminal, point sys.
Public Member Functions inherited from lldb_private::ScriptInterpreterPython
 ScriptInterpreterPython (Debugger &debugger)
llvm::Expected< std::string > ExtensionToImportPath (lldb::ScriptedExtension extension) override
StructuredData::DictionarySP GetInterpreterInfo () override
llvm::Expected< FileSpecGenerateExtensionTemplate (const std::string &name, std::vector< ExtensionTemplateRequest > &extensions, bool generate_non_abstract_methods, std::string output_file) override
Public Member Functions inherited from lldb_private::ScriptInterpreter
 ScriptInterpreter (Debugger &debugger, lldb::ScriptLanguage script_lang)
 ~ScriptInterpreter () override=default
Status SetBreakpointCommandCallback (std::vector< std::reference_wrapper< BreakpointOptions > > &bp_options_vec, const char *callback_text)
 Set the specified text as the callback for the breakpoint.
Status SetBreakpointCommandCallbackFunction (std::vector< std::reference_wrapper< BreakpointOptions > > &bp_options_vec, const char *function_name, StructuredData::ObjectSP extra_args_sp)
virtual void Clear ()
const char * GetScriptInterpreterPtyName ()
lldb::ScriptLanguage GetLanguage ()
virtual lldb::ScriptedPlatformInterfaceUP GetScriptedPlatformInterface ()
virtual SanitizedScriptingModuleName GetSanitizedScriptingModuleName (llvm::StringRef name)
lldb::DataExtractorSP GetDataExtractorFromSBData (const lldb::SBData &data) const
Status GetStatusFromSBError (const lldb::SBError &error) const
EventGetOpaqueTypeFromSBEvent (const lldb::SBEvent &event) const
lldb::StreamSP GetOpaqueTypeFromSBStream (const lldb::SBStream &stream) const
lldb::ThreadSP GetOpaqueTypeFromSBThread (const lldb::SBThread &exe_ctx) const
lldb::StackFrameSP GetOpaqueTypeFromSBFrame (const lldb::SBFrame &frame) const
SymbolContext GetOpaqueTypeFromSBSymbolContext (const lldb::SBSymbolContext &sym_ctx) const
lldb::BreakpointSP GetOpaqueTypeFromSBBreakpoint (const lldb::SBBreakpoint &breakpoint) const
lldb::BreakpointLocationSP GetOpaqueTypeFromSBBreakpointLocation (const lldb::SBBreakpointLocation &break_loc) const
CommandReturnObjectGetOpaqueTypeFromSBCommandReturnObject (const lldb::SBCommandReturnObject &cmd_retobj) const
lldb::DebuggerSP GetOpaqueTypeFromSBDebugger (const lldb::SBDebugger &debugger) const
lldb::ProcessAttachInfoSP GetOpaqueTypeFromSBAttachInfo (const lldb::SBAttachInfo &attach_info) const
lldb::ProcessLaunchInfoSP GetOpaqueTypeFromSBLaunchInfo (const lldb::SBLaunchInfo &launch_info) const
std::optional< MemoryRegionInfoGetOpaqueTypeFromSBMemoryRegionInfo (const lldb::SBMemoryRegionInfo &mem_region) const
lldb::ExecutionContextRefSP GetOpaqueTypeFromSBExecutionContext (const lldb::SBExecutionContext &exe_ctx) const
lldb::StackFrameListSP GetOpaqueTypeFromSBFrameList (const lldb::SBFrameList &exe_ctx) const
lldb::ValueObjectSP GetOpaqueTypeFromSBValue (const lldb::SBValue &value) const
lldb::TargetSP GetOpaqueTypeFromSBTarget (const lldb::SBTarget &target) const
Public Member Functions inherited from lldb_private::PluginInterface
 PluginInterface ()=default
virtual ~PluginInterface ()=default
 PluginInterface (const PluginInterface &)=delete
PluginInterfaceoperator= (const PluginInterface &)=delete
Public Member Functions inherited from lldb_private::IOHandlerDelegateMultiline
 IOHandlerDelegateMultiline (llvm::StringRef end_line, Completion completion=Completion::None)
 ~IOHandlerDelegateMultiline () override=default
llvm::StringRef IOHandlerGetControlSequence (char ch) override
bool IOHandlerIsInputComplete (IOHandler &io_handler, StringList &lines) override
 Called to determine whether typing enter after the last line in lines should end input.
Public Member Functions inherited from lldb_private::IOHandlerDelegate
 IOHandlerDelegate (Completion completion=Completion::None)
virtual ~IOHandlerDelegate ()=default
virtual void IOHandlerDeactivated (IOHandler &io_handler)
virtual std::optional< std::string > IOHandlerSuggestion (IOHandler &io_handler, llvm::StringRef line)
virtual void IOHandlerComplete (IOHandler &io_handler, CompletionRequest &request)
virtual const char * IOHandlerGetFixIndentationCharacters ()
virtual int IOHandlerFixIndentation (IOHandler &io_handler, const StringList &lines, int cursor_position)
 Called when a new line is created or one of an identified set of indentation characters is typed.
virtual void IOHandlerInputInterrupted (IOHandler &io_handler, std::string &data)
virtual const char * IOHandlerGetCommandPrefix ()
virtual const char * IOHandlerGetHelpPrologue ()
virtual bool IOHandlerInterrupt (IOHandler &io_handler)

Static Public Member Functions

static lldb::ScriptInterpreterSP CreateInstance (Debugger &debugger)
static bool BreakpointCallbackFunction (void *baton, StoppointCallbackContext *context, lldb::user_id_t break_id, lldb::user_id_t break_loc_id)
static bool WatchpointCallbackFunction (void *baton, StoppointCallbackContext *context, lldb::user_id_t watch_id)
static void Initialize ()
static void AddToSysPath (AddLocation location, std::string path)
Static Public Member Functions inherited from lldb_private::ScriptInterpreterPython
static void Initialize ()
static void Terminate ()
static llvm::StringRef GetPluginNameStatic ()
static llvm::StringRef GetPluginDescriptionStatic ()
static FileSpec GetPythonDir ()
static void SharedLibraryDirectoryHelper (FileSpec &this_file)
Static Public Member Functions inherited from lldb_private::ScriptInterpreter
static std::string LanguageToString (lldb::ScriptLanguage language)
static lldb::ScriptLanguage StringToLanguage (const llvm::StringRef &string)
static llvm::StringLiteral ExtensionToString (lldb::ScriptedExtension extension)
static lldb::ScriptedExtension StringToExtension (llvm::StringRef string)

Public Attributes

python::PythonObject m_saved_stdin
python::PythonObject m_saved_stdout
python::PythonObject m_saved_stderr
std::unique_ptr< SessionIORedirectm_stdout_redirect
std::unique_ptr< SessionIORedirectm_stderr_redirect
python::PythonModule m_main_module
python::PythonDictionary m_session_dict
python::PythonDictionary m_sys_module_dict
python::PythonObject m_run_one_line_function
python::PythonObject m_run_one_line_str_global
std::string m_dictionary_name
ActiveIOHandler m_active_io_handler
bool m_session_is_active
bool m_pty_secondary_is_open
bool m_valid_session
uint32_t m_lock_count
std::mutex m_mutex
PyThreadState * m_command_thread_state

Friends

class IOHandlerPythonInterpreter

Additional Inherited Members

Protected Member Functions inherited from lldb_private::ScriptInterpreterPython
llvm::Error ParseExtensionSchema (Stream &s, llvm::StringRef output_script_prefix, const llvm::SmallVector< llvm::StringRef > &extension_path, bool generate_non_abstract_methods, std::set< std::string > &typing_imports)
llvm::Expected< StructuredData::ObjectSPGetExtensionSchema (const llvm::SmallVector< llvm::StringRef > &extension_path)
Static Protected Member Functions inherited from lldb_private::ScriptInterpreterPython
static void ComputePythonDirForApple (llvm::SmallVectorImpl< char > &path)
static void ComputePythonDir (llvm::SmallVectorImpl< char > &path)
Protected Attributes inherited from lldb_private::ScriptInterpreter
Debuggerm_debugger
lldb::ScriptLanguage m_script_lang
Protected Attributes inherited from lldb_private::IOHandlerDelegateMultiline
const std::string m_end_line
Protected Attributes inherited from lldb_private::IOHandlerDelegate
Completion m_completion

Detailed Description

Definition at line 25 of file ScriptInterpreterPythonImpl.h.

Member Enumeration Documentation

◆ ActiveIOHandler

Enumerator
eIOHandlerNone 
eIOHandlerBreakpoint 
eIOHandlerWatchpoint 

Definition at line 340 of file ScriptInterpreterPythonImpl.h.

◆ AddLocation

Enumerator
Beginning 
End 

Definition at line 314 of file ScriptInterpreterPythonImpl.h.

Constructor & Destructor Documentation

◆ ScriptInterpreterPythonImpl()

◆ ~ScriptInterpreterPythonImpl()

ScriptInterpreterPythonImpl::~ScriptInterpreterPythonImpl ( )
override

Definition at line 898 of file ScriptInterpreterPython.cpp.

References m_session_dict.

Member Function Documentation

◆ AcquireInterpreterLock()

std::unique_ptr< ScriptInterpreterLocker > ScriptInterpreterPythonImpl::AcquireInterpreterLock ( )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 3012 of file ScriptInterpreterPython.cpp.

◆ AddToSysPath()

void ScriptInterpreterPythonImpl::AddToSysPath ( AddLocation location,
std::string path )
static

Definition at line 3070 of file ScriptInterpreterPython.cpp.

◆ BreakpointCallbackFunction()

◆ CalculateNumChildren()

size_t ScriptInterpreterPythonImpl::CalculateNumChildren ( const StructuredData::ObjectSP & implementor,
uint32_t max )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 2366 of file ScriptInterpreterPython.cpp.

◆ CheckObjectExists()

bool lldb_private::ScriptInterpreterPythonImpl::CheckObjectExists ( const char * name)
inlineoverridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 164 of file ScriptInterpreterPythonImpl.h.

References GetDocumentationForItem().

◆ CollectDataForBreakpointCommandCallback()

void ScriptInterpreterPythonImpl::CollectDataForBreakpointCommandCallback ( std::vector< std::reference_wrapper< BreakpointOptions > > & bp_options_vec,
CommandReturnObject & result )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 1666 of file ScriptInterpreterPython.cpp.

◆ CollectDataForWatchpointCommandCallback()

void ScriptInterpreterPythonImpl::CollectDataForWatchpointCommandCallback ( WatchpointOptions * wp_options,
CommandReturnObject & result )
overridevirtual

◆ CreateInstance()

lldb::ScriptInterpreterSP ScriptInterpreterPythonImpl::CreateInstance ( Debugger & debugger)
static

◆ CreateOperatingSystemInterface()

OperatingSystemInterfaceSP ScriptInterpreterPythonImpl::CreateOperatingSystemInterface ( )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 2037 of file ScriptInterpreterPython.cpp.

◆ CreateScriptedBreakpointInterface()

ScriptedBreakpointInterfaceSP ScriptInterpreterPythonImpl::CreateScriptedBreakpointInterface ( )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 1997 of file ScriptInterpreterPython.cpp.

◆ CreateScriptedCommandInterface()

ScriptedCommandInterfaceSP ScriptInterpreterPythonImpl::CreateScriptedCommandInterface ( )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 2007 of file ScriptInterpreterPython.cpp.

◆ CreateScriptedFrameInterface()

ScriptedFrameInterfaceSP ScriptInterpreterPythonImpl::CreateScriptedFrameInterface ( )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 2022 of file ScriptInterpreterPython.cpp.

◆ CreateScriptedFrameProviderInterface()

ScriptedFrameProviderInterfaceSP ScriptInterpreterPythonImpl::CreateScriptedFrameProviderInterface ( )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 2027 of file ScriptInterpreterPython.cpp.

◆ CreateScriptedHookInterface()

ScriptedHookInterfaceSP ScriptInterpreterPythonImpl::CreateScriptedHookInterface ( )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 1992 of file ScriptInterpreterPython.cpp.

◆ CreateScriptedProcessInterface()

ScriptedProcessInterfaceUP ScriptInterpreterPythonImpl::CreateScriptedProcessInterface ( )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 1987 of file ScriptInterpreterPython.cpp.

◆ CreateScriptedStackFrameRecognizerInterface()

ScriptedStackFrameRecognizerInterfaceSP ScriptInterpreterPythonImpl::CreateScriptedStackFrameRecognizerInterface ( )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 2002 of file ScriptInterpreterPython.cpp.

◆ CreateScriptedStringSummaryInterface()

ScriptedStringSummaryInterfaceSP ScriptInterpreterPythonImpl::CreateScriptedStringSummaryInterface ( )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 2012 of file ScriptInterpreterPython.cpp.

◆ CreateScriptedThreadInterface()

ScriptedThreadInterfaceSP ScriptInterpreterPythonImpl::CreateScriptedThreadInterface ( )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 2017 of file ScriptInterpreterPython.cpp.

◆ CreateScriptedThreadPlanInterface()

ScriptedThreadPlanInterfaceSP ScriptInterpreterPythonImpl::CreateScriptedThreadPlanInterface ( )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 2032 of file ScriptInterpreterPython.cpp.

◆ CreateStructuredDataFromScriptObject()

StructuredData::ObjectSP ScriptInterpreterPythonImpl::CreateStructuredDataFromScriptObject ( ScriptObject obj)
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 2042 of file ScriptInterpreterPython.cpp.

◆ CreateSyntheticScriptedProvider()

StructuredData::ObjectSP ScriptInterpreterPythonImpl::CreateSyntheticScriptedProvider ( const char * class_name,
lldb::ValueObjectSP valobj )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 2100 of file ScriptInterpreterPython.cpp.

◆ DecrementLockCount()

uint32_t lldb_private::ScriptInterpreterPythonImpl::DecrementLockCount ( )
inline

Definition at line 333 of file ScriptInterpreterPythonImpl.h.

References m_lock_count, and m_mutex.

◆ EnterSession()

bool ScriptInterpreterPythonImpl::EnterSession ( uint16_t on_entry_flags,
lldb::FileSP in,
lldb::FileSP out,
lldb::FileSP err )

Definition at line 1151 of file ScriptInterpreterPython.cpp.

◆ ExecuteInterpreterLoop()

void ScriptInterpreterPythonImpl::ExecuteInterpreterLoop ( )
overridevirtual

Implements lldb_private::ScriptInterpreter.

Definition at line 1430 of file ScriptInterpreterPython.cpp.

◆ ExecuteMultipleLines()

Status ScriptInterpreterPythonImpl::ExecuteMultipleLines ( const char * in_string,
const ExecuteScriptOptions & options = ExecuteScriptOptions() )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 1615 of file ScriptInterpreterPython.cpp.

◆ ExecuteOneLine()

bool ScriptInterpreterPythonImpl::ExecuteOneLine ( llvm::StringRef command,
CommandReturnObject * result,
const ExecuteScriptOptions & options = ExecuteScriptOptions() )
overridevirtual

◆ ExecuteOneLineWithReturn()

bool ScriptInterpreterPythonImpl::ExecuteOneLineWithReturn ( llvm::StringRef in_string,
ScriptInterpreter::ScriptReturnType return_type,
void * ret_value,
const ExecuteScriptOptions & options = ExecuteScriptOptions() )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 1491 of file ScriptInterpreterPython.cpp.

◆ ExportFunctionDefinitionToInterpreter()

Status ScriptInterpreterPythonImpl::ExportFunctionDefinitionToInterpreter ( StringList & function_def)
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 1795 of file ScriptInterpreterPython.cpp.

References WatchpointCallbackFunction().

◆ FormatterCallbackFunction()

bool ScriptInterpreterPythonImpl::FormatterCallbackFunction ( const char * function_name,
lldb::TypeImplSP type_impl_sp )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 2247 of file ScriptInterpreterPython.cpp.

◆ GenerateBreakpointCommandCallbackData()

Status ScriptInterpreterPythonImpl::GenerateBreakpointCommandCallbackData ( StringList & input,
std::string & output,
bool has_extra_args,
bool is_callback )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 2144 of file ScriptInterpreterPython.cpp.

◆ GenerateFunction()

Status ScriptInterpreterPythonImpl::GenerateFunction ( const char * signature,
const StringList & input,
bool is_callback )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 1807 of file ScriptInterpreterPython.cpp.

References error().

◆ GenerateScriptAliasFunction()

bool ScriptInterpreterPythonImpl::GenerateScriptAliasFunction ( StringList & input,
std::string & output )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 1917 of file ScriptInterpreterPython.cpp.

◆ GenerateTypeScriptFunction() [1/2]

bool ScriptInterpreterPythonImpl::GenerateTypeScriptFunction ( const char * oneliner,
std::string & output,
const void * name_token = nullptr )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 2130 of file ScriptInterpreterPython.cpp.

◆ GenerateTypeScriptFunction() [2/2]

bool ScriptInterpreterPythonImpl::GenerateTypeScriptFunction ( StringList & input,
std::string & output,
const void * name_token = nullptr )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 1889 of file ScriptInterpreterPython.cpp.

References error().

◆ GenerateTypeSynthClass() [1/2]

bool ScriptInterpreterPythonImpl::GenerateTypeSynthClass ( const char * oneliner,
std::string & output,
const void * name_token = nullptr )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 2137 of file ScriptInterpreterPython.cpp.

◆ GenerateTypeSynthClass() [2/2]

bool ScriptInterpreterPythonImpl::GenerateTypeSynthClass ( StringList & input,
std::string & output,
const void * name_token = nullptr )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 1942 of file ScriptInterpreterPython.cpp.

◆ GenerateWatchpointCommandCallbackData()

bool ScriptInterpreterPythonImpl::GenerateWatchpointCommandCallbackData ( StringList & input,
std::string & output,
bool is_callback )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 2174 of file ScriptInterpreterPython.cpp.

References error().

◆ GetChildAtIndex()

lldb::ValueObjectSP ScriptInterpreterPythonImpl::GetChildAtIndex ( const StructuredData::ObjectSP & implementor,
uint32_t idx )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 2388 of file ScriptInterpreterPython.cpp.

◆ GetDictionaryName()

const char * lldb_private::ScriptInterpreterPythonImpl::GetDictionaryName ( )
inline

Definition at line 229 of file ScriptInterpreterPythonImpl.h.

References m_dictionary_name.

◆ GetDocumentationForItem()

bool ScriptInterpreterPythonImpl::GetDocumentationForItem ( const char * item,
std::string & dest )
overridevirtual

In Python, a special attribute doc contains the docstring for an object (function, method, class, ...) if any is defined Otherwise, the attribute's value is None.

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 2981 of file ScriptInterpreterPython.cpp.

Referenced by CheckObjectExists().

◆ GetDynamicSettings()

StructuredData::DictionarySP ScriptInterpreterPythonImpl::GetDynamicSettings ( StructuredData::ObjectSP plugin_module_sp,
Target * target,
const char * setting_name,
lldb_private::Status & error )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 2071 of file ScriptInterpreterPython.cpp.

◆ GetEmbeddedInterpreterModuleObjects()

bool ScriptInterpreterPythonImpl::GetEmbeddedInterpreterModuleObjects ( )

Definition at line 1317 of file ScriptInterpreterPython.cpp.

◆ GetIndexOfChildWithName()

llvm::Expected< uint32_t > ScriptInterpreterPythonImpl::GetIndexOfChildWithName ( const StructuredData::ObjectSP & implementor,
const char * child_name )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 2422 of file ScriptInterpreterPython.cpp.

◆ GetMainModule()

PythonModule & ScriptInterpreterPythonImpl::GetMainModule ( )

Definition at line 1245 of file ScriptInterpreterPython.cpp.

◆ GetMaxPositionalArgumentsForCallable()

llvm::Expected< unsigned > ScriptInterpreterPythonImpl::GetMaxPositionalArgumentsForCallable ( const llvm::StringRef & callable_name)
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 1278 of file ScriptInterpreterPython.cpp.

References m_sys_module_dict.

◆ GetPluginName()

llvm::StringRef lldb_private::ScriptInterpreterPythonImpl::GetPluginName ( )
inlineoverridevirtual

◆ GetScriptedSummary()

bool ScriptInterpreterPythonImpl::GetScriptedSummary ( const char * function_name,
lldb::ValueObjectSP valobj,
StructuredData::ObjectSP & callee_wrapper_sp,
const TypeSummaryOptions & options,
std::string & retval )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 2196 of file ScriptInterpreterPython.cpp.

◆ GetSessionDictionary()

PythonDictionary & ScriptInterpreterPythonImpl::GetSessionDictionary ( )

◆ GetSyntheticTypeName()

ConstString ScriptInterpreterPythonImpl::GetSyntheticTypeName ( const StructuredData::ObjectSP & implementor)
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 2535 of file ScriptInterpreterPython.cpp.

◆ GetSyntheticValue()

lldb::ValueObjectSP ScriptInterpreterPythonImpl::GetSyntheticValue ( const StructuredData::ObjectSP & implementor)
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 2500 of file ScriptInterpreterPython.cpp.

◆ GetSysModuleDictionary()

PythonDictionary & ScriptInterpreterPythonImpl::GetSysModuleDictionary ( )

◆ GetThreadState()

PyThreadState * lldb_private::ScriptInterpreterPythonImpl::GetThreadState ( )
inline

Definition at line 231 of file ScriptInterpreterPythonImpl.h.

References m_command_thread_state.

◆ IncrementLockCount()

uint32_t lldb_private::ScriptInterpreterPythonImpl::IncrementLockCount ( )
inline

Definition at line 328 of file ScriptInterpreterPythonImpl.h.

References m_lock_count, and m_mutex.

◆ Initialize()

◆ Interrupt()

bool ScriptInterpreterPythonImpl::Interrupt ( )
overridevirtual

◆ IOHandlerActivated()

void ScriptInterpreterPythonImpl::IOHandlerActivated ( IOHandler & io_handler,
bool interactive )
overridevirtual

◆ IOHandlerInputComplete()

void ScriptInterpreterPythonImpl::IOHandlerInputComplete ( IOHandler & io_handler,
std::string & data )
overridevirtual

Called when a line or lines have been retrieved.

This function can handle the current line and possibly call IOHandler::SetIsDone(true) when the IO handler is done like when "quit" is entered as a command, of when an empty line is received. It is up to the delegate to determine when a line should cause a IOHandler to exit.

Implements lldb_private::IOHandlerDelegate.

Definition at line 933 of file ScriptInterpreterPython.cpp.

◆ IsExecutingPython()

uint32_t lldb_private::ScriptInterpreterPythonImpl::IsExecutingPython ( )
inline

Definition at line 323 of file ScriptInterpreterPythonImpl.h.

References m_lock_count, and m_mutex.

◆ IsReservedWord()

bool ScriptInterpreterPythonImpl::IsReservedWord ( const char * word)
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 2894 of file ScriptInterpreterPython.cpp.

References m_dictionary_name.

◆ LeaveSession()

void ScriptInterpreterPythonImpl::LeaveSession ( )

Definition at line 999 of file ScriptInterpreterPython.cpp.

◆ LoadPluginModule()

StructuredData::ObjectSP ScriptInterpreterPythonImpl::LoadPluginModule ( const FileSpec & file_spec,
lldb_private::Status & error )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 2053 of file ScriptInterpreterPython.cpp.

◆ LoadScriptingModule()

bool ScriptInterpreterPythonImpl::LoadScriptingModule ( const char * filename,
const LoadScriptOptions & options,
lldb_private::Status & error,
StructuredData::ObjectSP * module_sp = nullptr,
FileSpec extra_search_dir = {},
lldb::TargetSP loaded_into_target_sp = {} )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 2704 of file ScriptInterpreterPython.cpp.

◆ MightHaveChildrenSynthProviderInstance()

bool ScriptInterpreterPythonImpl::MightHaveChildrenSynthProviderInstance ( const StructuredData::ObjectSP & implementor)
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 2476 of file ScriptInterpreterPython.cpp.

◆ RedirectTerminalHandleThroughLock()

bool ScriptInterpreterPythonImpl::RedirectTerminalHandleThroughLock ( const char * py_name,
python::PythonObject & save_file,
const char * mode,
File & file )

If file is the debugger's own terminal, point sys.

py_name at a pipe-backed file whose writes are serialized through the output lock (see SessionIORedirect) and return true. Return false to let SetStdHandle wrap file normally.

Definition at line 1059 of file ScriptInterpreterPython.cpp.

References m_session_is_active, and m_stderr_redirect.

◆ RunScriptBasedCommand()

bool ScriptInterpreterPythonImpl::RunScriptBasedCommand ( const char * impl_function,
llvm::StringRef args,
ScriptedCommandSynchronicity synchronicity,
lldb_private::CommandReturnObject & cmd_retobj,
Status & error,
const lldb_private::ExecutionContext & exe_ctx )
overridevirtual

◆ RunScriptFormatKeyword() [1/5]

bool ScriptInterpreterPythonImpl::RunScriptFormatKeyword ( const char * impl_function,
Process * process,
std::string & output,
Status & error )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 2568 of file ScriptInterpreterPython.cpp.

References lldb_private::python::Borrowed.

◆ RunScriptFormatKeyword() [2/5]

bool ScriptInterpreterPythonImpl::RunScriptFormatKeyword ( const char * impl_function,
StackFrame * frame,
std::string & output,
Status & error )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 2643 of file ScriptInterpreterPython.cpp.

References error().

◆ RunScriptFormatKeyword() [3/5]

bool ScriptInterpreterPythonImpl::RunScriptFormatKeyword ( const char * impl_function,
Target * target,
std::string & output,
Status & error )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 2618 of file ScriptInterpreterPython.cpp.

◆ RunScriptFormatKeyword() [4/5]

bool ScriptInterpreterPythonImpl::RunScriptFormatKeyword ( const char * impl_function,
Thread * thread,
std::string & output,
Status & error )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 2593 of file ScriptInterpreterPython.cpp.

References error().

◆ RunScriptFormatKeyword() [5/5]

bool ScriptInterpreterPythonImpl::RunScriptFormatKeyword ( const char * impl_function,
ValueObject * value,
std::string & output,
Status & error )
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 2668 of file ScriptInterpreterPython.cpp.

◆ SetBreakpointCommandCallback() [1/3]

Status ScriptInterpreterPythonImpl::SetBreakpointCommandCallback ( BreakpointOptions & bp_options,
const char * callback_body,
bool is_callback )
overridevirtual

Set the callback body text into the callback for the breakpoint.

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 1741 of file ScriptInterpreterPython.cpp.

References BreakpointCallbackFunction(), and error().

◆ SetBreakpointCommandCallback() [2/3]

Status ScriptInterpreterPythonImpl::SetBreakpointCommandCallback ( BreakpointOptions & bp_options,
const char * command_body_text,
StructuredData::ObjectSP extra_args_sp,
bool uses_extra_args,
bool is_callback )

Definition at line 1749 of file ScriptInterpreterPython.cpp.

◆ SetBreakpointCommandCallback() [3/3]

Status ScriptInterpreterPythonImpl::SetBreakpointCommandCallback ( BreakpointOptions & bp_options,
std::unique_ptr< BreakpointOptions::CommandData > & data_up )
overridevirtual

This one is for deserialization:

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 1723 of file ScriptInterpreterPython.cpp.

References error().

◆ SetBreakpointCommandCallbackFunction()

Status ScriptInterpreterPythonImpl::SetBreakpointCommandCallbackFunction ( BreakpointOptions & bp_options,
const char * function_name,
StructuredData::ObjectSP extra_args_sp )
overridevirtual

Set a script function as the callback for the breakpoint.

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 1681 of file ScriptInterpreterPython.cpp.

References eIOHandlerWatchpoint, m_active_io_handler, and lldb_private::ScriptInterpreter::m_debugger.

◆ SetStdHandle()

bool ScriptInterpreterPythonImpl::SetStdHandle ( lldb::FileSP file,
const char * py_name,
python::PythonObject & save_file,
const char * mode,
bool serialize_terminal_output )

Point sys.

py_name at file. When serialize_terminal_output is true and file is the debugger's own terminal, the output is routed through a lock-synchronized pipe instead (see RedirectTerminalHandleThroughLock) so it cannot race the statusline redraw.

Definition at line 1113 of file ScriptInterpreterPython.cpp.

◆ SetThreadState()

void lldb_private::ScriptInterpreterPythonImpl::SetThreadState ( PyThreadState * s)
inline

Definition at line 233 of file ScriptInterpreterPythonImpl.h.

References m_command_thread_state.

◆ SetWatchpointCommandCallback()

void ScriptInterpreterPythonImpl::SetWatchpointCommandCallback ( WatchpointOptions * wp_options,
const char * user_input,
bool is_callback )
overridevirtual

Set a one-liner as the callback for the watchpoint.

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 1774 of file ScriptInterpreterPython.cpp.

◆ UpdateSynthProviderInstance()

bool ScriptInterpreterPythonImpl::UpdateSynthProviderInstance ( const StructuredData::ObjectSP & implementor)
overridevirtual

Reimplemented from lldb_private::ScriptInterpreter.

Definition at line 2452 of file ScriptInterpreterPython.cpp.

◆ WatchpointCallbackFunction()

bool ScriptInterpreterPythonImpl::WatchpointCallbackFunction ( void * baton,
StoppointCallbackContext * context,
lldb::user_id_t watch_id )
static

Definition at line 2320 of file ScriptInterpreterPython.cpp.

Referenced by ExportFunctionDefinitionToInterpreter().

◆ IOHandlerPythonInterpreter

friend class IOHandlerPythonInterpreter
friend

Definition at line 27 of file ScriptInterpreterPythonImpl.h.

References error(), and IOHandlerPythonInterpreter.

Referenced by IOHandlerPythonInterpreter.

Member Data Documentation

◆ m_active_io_handler

ActiveIOHandler lldb_private::ScriptInterpreterPythonImpl::m_active_io_handler

◆ m_command_thread_state

PyThreadState* lldb_private::ScriptInterpreterPythonImpl::m_command_thread_state

◆ m_dictionary_name

std::string lldb_private::ScriptInterpreterPythonImpl::m_dictionary_name

◆ m_lock_count

uint32_t lldb_private::ScriptInterpreterPythonImpl::m_lock_count

◆ m_main_module

python::PythonModule lldb_private::ScriptInterpreterPythonImpl::m_main_module

◆ m_mutex

std::mutex lldb_private::ScriptInterpreterPythonImpl::m_mutex

◆ m_pty_secondary_is_open

bool lldb_private::ScriptInterpreterPythonImpl::m_pty_secondary_is_open

Definition at line 390 of file ScriptInterpreterPythonImpl.h.

Referenced by ScriptInterpreterPythonImpl().

◆ m_run_one_line_function

python::PythonObject lldb_private::ScriptInterpreterPythonImpl::m_run_one_line_function

Definition at line 385 of file ScriptInterpreterPythonImpl.h.

Referenced by ExecuteOneLine(), and ScriptInterpreterPythonImpl().

◆ m_run_one_line_str_global

python::PythonObject lldb_private::ScriptInterpreterPythonImpl::m_run_one_line_str_global

Definition at line 386 of file ScriptInterpreterPythonImpl.h.

Referenced by ExecuteOneLine(), and ScriptInterpreterPythonImpl().

◆ m_saved_stderr

python::PythonObject lldb_private::ScriptInterpreterPythonImpl::m_saved_stderr

Definition at line 379 of file ScriptInterpreterPythonImpl.h.

Referenced by ScriptInterpreterPythonImpl().

◆ m_saved_stdin

python::PythonObject lldb_private::ScriptInterpreterPythonImpl::m_saved_stdin

Definition at line 377 of file ScriptInterpreterPythonImpl.h.

Referenced by ScriptInterpreterPythonImpl().

◆ m_saved_stdout

python::PythonObject lldb_private::ScriptInterpreterPythonImpl::m_saved_stdout

Definition at line 378 of file ScriptInterpreterPythonImpl.h.

Referenced by ScriptInterpreterPythonImpl().

◆ m_session_dict

python::PythonDictionary lldb_private::ScriptInterpreterPythonImpl::m_session_dict

◆ m_session_is_active

bool lldb_private::ScriptInterpreterPythonImpl::m_session_is_active

◆ m_stderr_redirect

std::unique_ptr<SessionIORedirect> lldb_private::ScriptInterpreterPythonImpl::m_stderr_redirect

Definition at line 381 of file ScriptInterpreterPythonImpl.h.

Referenced by RedirectTerminalHandleThroughLock().

◆ m_stdout_redirect

std::unique_ptr<SessionIORedirect> lldb_private::ScriptInterpreterPythonImpl::m_stdout_redirect

Definition at line 380 of file ScriptInterpreterPythonImpl.h.

◆ m_sys_module_dict

python::PythonDictionary lldb_private::ScriptInterpreterPythonImpl::m_sys_module_dict

◆ m_valid_session

bool lldb_private::ScriptInterpreterPythonImpl::m_valid_session

Definition at line 391 of file ScriptInterpreterPythonImpl.h.

Referenced by ScriptInterpreterPythonImpl().


The documentation for this class was generated from the following files: