
Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926
38 lines
1.2 KiB
OpenEdge ABL
38 lines
1.2 KiB
OpenEdge ABL
%feature("docstring",
|
|
"A context object that provides access to core debugger entities.
|
|
|
|
Many debugger functions require a context when doing lookups. This class
|
|
provides a common structure that can be used as the result of a query that
|
|
can contain a single result.
|
|
|
|
For example, ::
|
|
|
|
exe = os.path.join(os.getcwd(), 'a.out')
|
|
|
|
# Create a target for the debugger.
|
|
target = self.dbg.CreateTarget(exe)
|
|
|
|
# Now create a breakpoint on main.c by name 'c'.
|
|
breakpoint = target.BreakpointCreateByName('c', 'a.out')
|
|
|
|
# Now launch the process, and do not stop at entry point.
|
|
process = target.LaunchSimple(None, None, os.getcwd())
|
|
|
|
# The inferior should stop on 'c'.
|
|
from lldbutil import get_stopped_thread
|
|
thread = get_stopped_thread(process, lldb.eStopReasonBreakpoint)
|
|
frame0 = thread.GetFrameAtIndex(0)
|
|
|
|
# Now get the SBSymbolContext from this frame. We want everything. :-)
|
|
context = frame0.GetSymbolContext(lldb.eSymbolContextEverything)
|
|
|
|
# Get the module.
|
|
module = context.GetModule()
|
|
...
|
|
|
|
# And the compile unit associated with the frame.
|
|
compileUnit = context.GetCompileUnit()
|
|
...
|
|
"
|
|
) lldb::SBSymbolContext;
|