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