16cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen//===-- SWIG Interface for SBDebugger ---------------------------*- C++ -*-===//
26cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen//
36cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen//                     The LLVM Compiler Infrastructure
46cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen//
56cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen// This file is distributed under the University of Illinois Open Source
66cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen// License. See LICENSE.TXT for details.
76cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen//
86cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen//===----------------------------------------------------------------------===//
96cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
106cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chennamespace lldb {
116cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
126cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen%feature("docstring",
136cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen"SBDebugger is the primordial object that creates SBTargets and provides
146cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chenaccess to them.  It also manages the overall debugging experiences.
156cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
166cf1bc333301e95ad5c96481d63b270eac7a7266Johnny ChenFor example (from example/disasm.py),
176cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
186cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chenimport lldb
196cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chenimport os
206cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chenimport sys
216cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
226cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chendef disassemble_instructions (insts):
236cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    for i in insts:
246cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen        print i
256cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
266cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen...
276cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
286cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen# Create a new debugger instance
296cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chendebugger = lldb.SBDebugger.Create()
306cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
316cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen# When we step or continue, don't return from the function until the process
326cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen# stops. We do this by setting the async mode to false.
336cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chendebugger.SetAsync (False)
346cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
356cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen# Create a target from a file and arch
366cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chenprint 'Creating a target for \'%s\'' % exe
376cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
386cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chentarget = debugger.CreateTargetWithFileAndArch (exe, lldb.LLDB_ARCH_DEFAULT)
396cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
406cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chenif target:
416cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    # If the target is valid set a breakpoint at main
426cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    main_bp = target.BreakpointCreateByName (fname, target.GetExecutable().GetFilename());
436cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
446cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    print main_bp
456cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
466cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    # Launch the process. Since we specified synchronous mode, we won't return
476cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    # from this function until we hit the breakpoint at main
486cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    process = target.LaunchSimple (None, None, os.getcwd())
496cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
506cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    # Make sure the launch went ok
516cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    if process:
526cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen        # Print some simple process info
536cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen        state = process.GetState ()
546cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen        print process
556cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen        if state == lldb.eStateStopped:
566cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen            # Get the first thread
576cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen            thread = process.GetThreadAtIndex (0)
586cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen            if thread:
596cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                # Print some simple thread info
606cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                print thread
616cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                # Get the first frame
626cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                frame = thread.GetFrameAtIndex (0)
636cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                if frame:
646cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                    # Print some simple frame info
656cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                    print frame
666cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                    function = frame.GetFunction()
676cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                    # See if we have debug info (a function)
686cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                    if function:
696cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                        # We do have a function, print some info for the function
706cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                        print function
716cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                        # Now get all instructions for this function and print them
726cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                        insts = function.GetInstructions(target)
736cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                        disassemble_instructions (insts)
746cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                    else:
756cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                        # See if we have a symbol in the symbol table for where we stopped
766cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                        symbol = frame.GetSymbol();
776cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                        if symbol:
786cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                            # We do have a symbol, print some info for the symbol
796cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                            print symbol
806cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                            # Now get all instructions for this symbol and print them
816cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                            insts = symbol.GetInstructions(target)
826cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                            disassemble_instructions (insts)
836cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
846cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                    registerList = frame.GetRegisters()
856cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                    print 'Frame registers (size of register set = %d):' % registerList.GetSize()
866cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                    for value in registerList:
876cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                        #print value
886cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                        print '%s (number of children = %d):' % (value.GetName(), value.GetNumChildren())
896cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                        for child in value:
907a87d52785eba653682d6f3c66bad1871d8c7108Daniel Malea                            print 'Name: ', child.GetName(), ' Value: ', child.GetValue()
916cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
926cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen            print 'Hit the breakpoint at main, enter to continue and wait for program to exit or \'Ctrl-D\'/\'quit\' to terminate the program'
936cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen            next = sys.stdin.readline()
946cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen            if not next or next.rstrip('\n') == 'quit':
956cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                print 'Terminating the inferior process...'
966cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                process.Kill()
976cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen            else:
986cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                # Now continue to the program exit
996cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                process.Continue()
1006cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                # When we return from the above function we will hopefully be at the
1016cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                # program exit. Print out some process info
1026cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                print process
1036cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen        elif state == lldb.eStateExited:
1046cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen            print 'Didn\'t hit the breakpoint at main, program has exited...'
1056cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen        else:
1066cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen            print 'Unexpected process state: %s, killing process...' % debugger.StateAsCString (state)
1076cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen            process.Kill()
1086cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen") SBDebugger;
1096cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chenclass SBDebugger
1106cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen{
1116cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chenpublic:
1126cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
1136cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    static void
1146cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    Initialize();
1156cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
1166cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    static void
1176cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    Terminate();
1186cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
1196cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    static lldb::SBDebugger
1206cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    Create();
1216cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
1226c530f2201be4788dedf3d5970399220fbd50b11Jim Ingham    static lldb::SBDebugger
1236c530f2201be4788dedf3d5970399220fbd50b11Jim Ingham    Create(bool source_init_files);
1246c530f2201be4788dedf3d5970399220fbd50b11Jim Ingham
12543898d79d2a13db64095fcb81bcaf66e7f8de624Filipe Cabecinhas    static lldb::SBDebugger
12643898d79d2a13db64095fcb81bcaf66e7f8de624Filipe Cabecinhas    Create(bool source_init_files, lldb::LogOutputCallback log_callback, void *baton);
12743898d79d2a13db64095fcb81bcaf66e7f8de624Filipe Cabecinhas
1286cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    static void
1296cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    Destroy (lldb::SBDebugger &debugger);
1306cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
131c5486870833244b1c705901f678f0aa2dca5b67cGreg Clayton    static void
132c5486870833244b1c705901f678f0aa2dca5b67cGreg Clayton    MemoryPressureDetected();
133c5486870833244b1c705901f678f0aa2dca5b67cGreg Clayton
1346cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    SBDebugger();
1356cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
1366cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    SBDebugger(const lldb::SBDebugger &rhs);
1376cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
1386cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    ~SBDebugger();
1396cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
1406cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    bool
1416cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    IsValid() const;
1426cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
1436cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    void
1446cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    Clear ();
1456cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
1466cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    void
1476cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    SetAsync (bool b);
14883dd2039d86b79e9cd5cf320bdb50c838fcb7b9cJim Ingham
14983dd2039d86b79e9cd5cf320bdb50c838fcb7b9cJim Ingham    bool
15083dd2039d86b79e9cd5cf320bdb50c838fcb7b9cJim Ingham    GetAsync ();
1516cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
1526cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    void
1536cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    SkipLLDBInitFiles (bool b);
1546cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
1556cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    void
1566cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    SetInputFileHandle (FILE *f, bool transfer_ownership);
1576cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
1586cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    void
1596cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    SetOutputFileHandle (FILE *f, bool transfer_ownership);
1606cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
1616cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    void
1626cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    SetErrorFileHandle (FILE *f, bool transfer_ownership);
1636cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
1646cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    FILE *
1656cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    GetInputFileHandle ();
1666cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
1676cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    FILE *
1686cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    GetOutputFileHandle ();
1696cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
1706cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    FILE *
1716cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    GetErrorFileHandle ();
1726cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
1736cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    lldb::SBCommandInterpreter
1746cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    GetCommandInterpreter ();
1756cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
1766cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    void
1776cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    HandleCommand (const char *command);
1786cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
1796cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    lldb::SBListener
1806cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    GetListener ();
1816cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
1826cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    void
1836cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    HandleProcessEvent (const lldb::SBProcess &process,
1846cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                        const lldb::SBEvent &event,
1856cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                        FILE *out,
1866cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                        FILE *err);
1876cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
1886cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    lldb::SBTarget
1893e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    CreateTarget (const char *filename,
1903e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton                  const char *target_triple,
1913e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton                  const char *platform_name,
1923e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton                  bool add_dependent_modules,
1933e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton                  lldb::SBError& sb_error);
1943e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
1953e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    lldb::SBTarget
1966cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    CreateTargetWithFileAndTargetTriple (const char *filename,
1976cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                                         const char *target_triple);
1986cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
1996cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    lldb::SBTarget
2006cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    CreateTargetWithFileAndArch (const char *filename,
2016cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                                 const char *archname);
2026cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
2036cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    lldb::SBTarget
2046cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    CreateTarget (const char *filename);
2056cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
2066cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    %feature("docstring",
2076cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    "Return true if target is deleted from the target list of the debugger."
2086cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    ) DeleteTarget;
2096cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    bool
2106cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    DeleteTarget (lldb::SBTarget &target);
2116cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
2126cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    lldb::SBTarget
2136cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    GetTargetAtIndex (uint32_t idx);
2146cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
215f92ddcc2fda5ca564acc37d2fecd4b577dfc2bdeJim Ingham    uint32_t
216f92ddcc2fda5ca564acc37d2fecd4b577dfc2bdeJim Ingham    GetIndexOfTarget (lldb::SBTarget target);
217f92ddcc2fda5ca564acc37d2fecd4b577dfc2bdeJim Ingham
2186cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    lldb::SBTarget
2196cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    FindTargetWithProcessID (pid_t pid);
2206cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
2216cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    lldb::SBTarget
2226cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    FindTargetWithFileAndArch (const char *filename,
2236cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen                               const char *arch);
2246cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
2256cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    uint32_t
2266cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    GetNumTargets ();
2276cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
2286cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    lldb::SBTarget
2296cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    GetSelectedTarget ();
2306cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
23183dd2039d86b79e9cd5cf320bdb50c838fcb7b9cJim Ingham    void
23283dd2039d86b79e9cd5cf320bdb50c838fcb7b9cJim Ingham    SetSelectedTarget (lldb::SBTarget &target);
23383dd2039d86b79e9cd5cf320bdb50c838fcb7b9cJim Ingham
234cc637461f6c59851302836c64e0cb002de4f4571Jim Ingham    lldb::SBSourceManager
2356cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    GetSourceManager ();
2366cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
2376cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    // REMOVE: just for a quick fix, need to expose platforms through
2386cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    // SBPlatform from this class.
2396cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    lldb::SBError
2406cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    SetCurrentPlatform (const char *platform_name);
2416cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
2426cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    bool
2436cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    SetCurrentPlatformSDKRoot (const char *sysroot);
2446cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
2456cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    // FIXME: Once we get the set show stuff in place, the driver won't need
2466cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    // an interface to the Set/Get UseExternalEditor.
2476cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    bool
2486cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    SetUseExternalEditor (bool input);
2496cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
2506cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    bool
2516cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    GetUseExternalEditor ();
2526cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
2536cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    static bool
2546cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    GetDefaultArchitecture (char *arch_name, size_t arch_name_len);
2556cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
2566cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    static bool
2576cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    SetDefaultArchitecture (const char *arch_name);
2586cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
2596cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    lldb::ScriptLanguage
2606cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    GetScriptingLanguage (const char *script_language_name);
2616cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
2626cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    static const char *
2636cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    GetVersionString ();
2646cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
2656cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    static const char *
2666cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    StateAsCString (lldb::StateType state);
2676cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
2686cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    static bool
2696cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    StateIsRunningState (lldb::StateType state);
2706cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
2716cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    static bool
2726cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    StateIsStoppedState (lldb::StateType state);
2736cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
2746c530f2201be4788dedf3d5970399220fbd50b11Jim Ingham    bool
2756c530f2201be4788dedf3d5970399220fbd50b11Jim Ingham    EnableLog (const char *channel, const char ** types);
2766c530f2201be4788dedf3d5970399220fbd50b11Jim Ingham
2776cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    void
27843898d79d2a13db64095fcb81bcaf66e7f8de624Filipe Cabecinhas    SetLoggingCallback (lldb::LogOutputCallback log_callback, void *baton);
27943898d79d2a13db64095fcb81bcaf66e7f8de624Filipe Cabecinhas
28043898d79d2a13db64095fcb81bcaf66e7f8de624Filipe Cabecinhas    void
281f590be8aaa0aba484d828019111d61dff33b273eFilipe Cabecinhas    DispatchInput (const void *data, size_t data_len);
2826cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
2836cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    void
2846cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    DispatchInputInterrupt ();
2856cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
2866cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    void
2876cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    DispatchInputEndOfFile ();
2886cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
2896cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    void
2906cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    PushInputReader (lldb::SBInputReader &reader);
2916cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
2926cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    void
2936cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    NotifyTopInputReader (lldb::InputReaderAction notification);
2946cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
2956cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    bool
2966cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    InputReaderIsTopReader (const lldb::SBInputReader &reader);
2976cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
2986cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    const char *
2996cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    GetInstanceName  ();
3006cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
3016cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    static SBDebugger
3026cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    FindDebuggerWithID (int id);
3036cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
3046cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    static lldb::SBError
3056cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    SetInternalVariable (const char *var_name, const char *value, const char *debugger_instance_name);
3066cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
3076cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    static lldb::SBStringList
3086cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    GetInternalVariableValue (const char *var_name, const char *debugger_instance_name);
3096cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
3106cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    bool
3116cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    GetDescription (lldb::SBStream &description);
3126cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
3136cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    uint32_t
3146cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    GetTerminalWidth () const;
3156cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
3166cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    void
3176cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    SetTerminalWidth (uint32_t term_width);
3186cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
3196cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    lldb::user_id_t
3206cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    GetID ();
3216cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
3226cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    const char *
3236cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    GetPrompt() const;
3246cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
3256cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    void
3266cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    SetPrompt (const char *prompt);
3276cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
3286cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    lldb::ScriptLanguage
3296cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    GetScriptLanguage() const;
3306cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
3316cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    void
3326cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    SetScriptLanguage (lldb::ScriptLanguage script_lang);
3336cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
3346cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    bool
3356cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    GetCloseInputOnEOF () const;
3366cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
3376cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    void
3386cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen    SetCloseInputOnEOF (bool b);
33916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
34016376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    lldb::SBTypeCategory
34116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    GetCategory (const char* category_name);
34216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
34316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    lldb::SBTypeCategory
34416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    CreateCategory (const char* category_name);
34516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
34616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    bool
34716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    DeleteCategory (const char* category_name);
34816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
34916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    uint32_t
35016376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    GetNumCategories ();
35116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
35216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    lldb::SBTypeCategory
35316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    GetCategoryAtIndex (uint32_t);
35416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
35516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    lldb::SBTypeCategory
35616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    GetDefaultCategory();
35716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
35816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    lldb::SBTypeFormat
35916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    GetFormatForType (lldb::SBTypeNameSpecifier);
36016376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
36116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    lldb::SBTypeSummary
36216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    GetSummaryForType (lldb::SBTypeNameSpecifier);
36316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
36416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    lldb::SBTypeFilter
36516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    GetFilterForType (lldb::SBTypeNameSpecifier);
36616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
36716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    lldb::SBTypeSynthetic
36816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    GetSyntheticForType (lldb::SBTypeNameSpecifier);
36916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
3706cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen}; // class SBDebugger
3716cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen
3726cf1bc333301e95ad5c96481d63b270eac7a7266Johnny Chen} // namespace lldb
373