aboutsummaryrefslogtreecommitdiff
path: root/lldb/scripts/Python
AgeCommit message (Collapse)AuthorFilesLines
2012-10-23<rdar://problem/12493007>Greg Clayton1-0/+3
Added a new API call to help efficiently determine if a SBValue could have children: bool SBValue::MightHaveChildren (); This is inteneded to be used bui GUI programs that need to show if a SBValue needs a disclosure triangle when displaying a hierarchical type in a tree view without having to complete the type (by calling SBValue::GetNumChildren()) as completing the type is expensive. llvm-svn: 166460
2012-10-22<rdar://problem/12437442>Enrico Granata2-0/+16
Given our implementation of ValueObjects we could have a scenario where a ValueObject has a dynamic type of Foo* at one point, and then its dynamic type changes to Bar* If Bar* has synthetic children enabled, by the time we figure that out, our public API is already vending SBValues wrapping a DynamicVO, instead of a SyntheticVO and there was no trivial way for us to change the SP inside an SBValue on the fly This checkin reimplements SBValue in terms of a wrapper, ValueImpl, that allows this substitutions on-the-fly by overriding GetSP() to do The Right Thing (TM) As an additional bonus, GetNonSyntheticValue() now works, and we can get rid of the ForceDisableSyntheticChildren idiom in ScriptInterpreterPython Lastly, this checkin makes sure the synthetic VOs get the correct m_value and m_data from their parents (prevented summaries from working in some cases) llvm-svn: 166426
2012-10-16API cleanup.Greg Clayton1-42/+19
llvm-svn: 166070
2012-10-16Add the ability to set timeout & "run all threads" options both from the ↵Jim Ingham4-0/+112
"expr" command and from the SB API's that evaluate expressions. <rdar://problem/12457211> llvm-svn: 166062
2012-10-16Removing the two extra GetXSize(bool) calls since we do not desire to ↵Enrico Granata1-6/+0
support them long-term llvm-svn: 166060
2012-10-16<rdar://problem/12446320> Fixing an issue with our Driver where setting an ↵Enrico Granata1-3/+15
immediate output would not cause suppression of the final printout. This allows effective output redirection for Python commands llvm-svn: 166058
2012-10-13<rdar://problem/12490588>Greg Clayton1-0/+3
From SBType, we can now get a lldb::BasicType enumeration out of an existing type. llvm-svn: 165857
2012-10-12<rdar://problem/12490558>Greg Clayton1-1/+1
SBProcess::SetSelectedThreadByID() had a "uint32_t tid" parameter which would truncate 64 bit thread IDs (lldb::tid_t is 64 bit). llvm-svn: 165852
2012-10-10<rdar://problem/12462744> Implement a new SBDeclaration class to wrap an ↵Enrico Granata4-0/+80
lldb_private::Declaration - make a GetDeclaration() API on SBValue to return a declaration. This will only work for vroot variables as they are they only objects for which we currently provide a valid Declaration llvm-svn: 165672
2012-10-10Change the Thread constructor over to take a Process& rather than a ↵Jim Ingham1-0/+12
ProcessSP. We can't create Threads with a NULL ProcessSP, so it makes no sense to use the SP. Then make the Thread a Broadcaster, and get it to broadcast when the selected frame is changed (but only from the Command Line) and when Thread::ReturnFromFrame changes the stack. Made the Driver use this notification to print the new thread status rather than doing it in the command. Fixed a few places where people were setting their broadcaster class by hand rather than using the static broadcaster class call. <rdar://problem/12383087> llvm-svn: 165640
2012-10-08Fix a build warning and a dangerous possible crasher.Greg Clayton1-1/+1
llvm-svn: 165460
2012-10-08<rdar://problem/12200505> Fixing a logical error in SBProcess, where the ↵Enrico Granata1-2/+3
get_process_thread_list function was creating invalid threads_access instances, and hence failing to correctly fill in the list llvm-svn: 165421
2012-10-08Silly me! There was a closing ) missing from one of the lines - and Python ↵Enrico Granata1-1/+1
complained about syntax errors on the next line. It being a Friday afternoon made the rest llvm-svn: 165420
2012-10-08Retrying to apply Vishal's patch - hopefully this time it won't break ↵Enrico Granata1-12/+20
Jason's build llvm-svn: 165410
2012-10-06Revert Vishal's patch that Enrico commited, at least for the weekend. With ↵Jason Molenda1-20/+11
it applied, starting lldb I get % ./lldb -x Traceback (most recent call last): File "<string>", line 1, in <module> File "/private/tmp/build/Debug/LLDB.framework/Versions/A/Resources/Python/lldb/__init__.py", line 9008 raise TypeError("No array item of type %s" % str(type(key))) ^ SyntaxError: invalid syntax Traceback (most recent call last): File "<string>", line 1, in <module> NameError: name 'run_one_line' is not defined Traceback (most recent call last): File "<string>", line 1, in <module> NameError: name 'run_one_line' is not defined Traceback (most recent call last): File "<string>", line 1, in <module> NameError: name 'run_one_line' is not defined (lldb) I did a clean build and still got the problem so I'm backing this out until Enrico can look at it. llvm-svn: 165356
2012-10-06patch from Vishal Patel to improve our lldb.value wrapperEnrico Granata1-11/+20
llvm-svn: 165348
2012-10-05<rdar://problem/12442990> Fix the implementation of lldb.value.__eq__Enrico Granata1-1/+9
llvm-svn: 165344
2012-10-05Add one-shot breakpoints (-o option to "break set") and a tbreak alias for ↵Jim Ingham1-0/+6
our gdb friends. llvm-svn: 165328
2012-10-04<rdar://problem/12099999> renaming SBStream::Printf to Print in the ↵Enrico Granata1-3/+9
scripting world in order to avoid supporting varargs through SWIG llvm-svn: 165274
2012-09-28Implementing plugins that provide commands.Enrico Granata3-1/+7
This checkin adds the capability for LLDB to load plugins from external dylibs that can provide new commands It exports an SBCommand class from the public API layer, and a new SBCommandPluginInterface There is a minimal load-only plugin manager built into the debugger, which can be accessed via Debugger::LoadPlugin. Plugins are loaded from two locations at debugger startup (LLDB.framework/Resources/PlugIns and ~/Library/Application Support/LLDB/PlugIns) and more can be (re)loaded via the "plugin load" command For an example of how to make a plugin, refer to the fooplugin.cpp file in examples/plugins/commands Caveats: Currently, the new API objects and features are not exposed via Python. The new commands can only be "parsed" (i.e. not raw) and get their command line via a char** parameter (we do not expose our internal Args object) There is no unloading feature, which can potentially lead to leaks if you overwrite the commands by reloading the same or different plugins There is no API exposed for option parsing, which means you may need to use getopt or roll-your-own llvm-svn: 164865
2012-09-27Patch from Dan Malea to get the Bourne shells scripts to run cleanly on ↵Jason Molenda2-30/+30
Ubuntu. llvm-svn: 164801
2012-09-25Add an API to figure out whether a breakpoint is internal or not.Jim Ingham1-0/+3
llvm-svn: 164648
2012-09-14Fixed some problems with SWIG bindings.Filipe Cabecinhas2-11/+13
This may (but shouldn't) break Linux (but I tested and it still worked on FreeBSD). The same shell scripts are now used on Xcode and Makefiles, for generating the SWIG bindings. Some compatibility fixes were applied, too (python path, bash-isms, etc). llvm-svn: 163912
2012-09-14Make the unwinding of the stack part of "thread return" work, and add the ↵Jim Ingham1-1/+1
thread return command. llvm-svn: 163867
2012-09-12Start at getting "thread return" working. Doesn't work yet.Jim Ingham1-0/+3
llvm-svn: 163670
2012-08-28Simplify the typecheck code.Filipe Cabecinhas1-10/+4
llvm-svn: 162753
2012-08-27Fixing a potential control may reach end of non-void function issueEnrico Granata1-0/+1
llvm-svn: 162685
2012-08-25Added SBDebugger's log callbacks to Python-landFilipe Cabecinhas4-32/+91
- Tweaked a parameter name in SBDebugger.h so my typemap will catch it; - Added a SBDebugger.Create(bool, callback, baton) to the swig interface; - Added SBDebugger.SetLoggingCallback to the swig interface; - Added a callback utility function for log callbacks; - Guard against Py_None on both callback utility functions; - Added a FIXME to the SBDebugger API test; - Added a __del__() stub for SBDebugger. We need to be able to get both the log callback and baton from an SBDebugger if we want to protect against memory leaks (or make the user responsible for holding another reference to the callback). Additionally, it's impossible to revert from a callback-backed log mechanism to a file-backed log mechanism. llvm-svn: 162633
2012-08-24Fixing a bunch of issues with the OS plugin codeEnrico Granata1-1/+1
llvm-svn: 162527
2012-08-24Adding bindings to the Script Interpreter for some basic Python OS plugin ↵Enrico Granata1-0/+97
functionality (still WIP) llvm-svn: 162513
2012-08-22Fixed a Linux building bug pointed out by Daniel Malea.Filipe Cabecinhas1-1/+1
llvm-svn: 162373
2012-08-22Added a typemap and wrappers for SBInputReader callbacksFilipe Cabecinhas3-1/+87
Now it's possible to use SBInputReader callbacks in Python. We leak the callback object, unfortunately. A __del__ method can be added to SBInputReader, but we have no way to check the callback function that is on the reader. So we can't call Py_DECREF on it when we have our PythonCallback function. One way to do it is to assume that reified SBInputReaders always have a Python callback (and always call Py_DECREF). Another one is to add methods or properties to SBInputReader (or make the m_callback_function property public). llvm-svn: 162356
2012-08-20Fix a crash (_wrap_SBDebugger_SetInputFileHandle -> PyString_AsString) ↵Johnny Chen1-2/+9
running the test suite. Also modify the boundary condition test case SBDebugger.DispatchInput(None) to be wrapped inside a try-except clause for now. llvm-svn: 162228
2012-08-20A baton isn't needed to dispatch input.Filipe Cabecinhas2-1/+17
I also added a typemap to make DispatchInput usable in Python. llvm-svn: 162204
2012-08-20Add FILE* typemaps for SBDebugger.GetInputFileHandle() and friends.Filipe Cabecinhas1-0/+35
llvm-svn: 162203
2012-08-18Merge python-GIL bracnh (by filcab) back into trunk!Johnny Chen1-1/+1
llvm-svn: 162161
2012-08-09rdar://problem/11457143 [ER] need "watchpoint command ..."Johnny Chen1-0/+79
Add 'watchpoint command add/delete/list' to lldb, plus two .py test files. llvm-svn: 161638
2012-07-31<rdar://problem/11275622>Greg Clayton1-1/+86
Added new API to lldb::SBTypeMember for bitfields: bool SBTypeMember::IsBitfield(); uint32_t SBTypeMember::GetBitfieldSizeInBits(); Also added new properties for easy access. Now SBTypeMember objects in python have a "fields" property for all type fields, "bases" for all direct bases, "vbases" for all virtual base classes and "members" for a combo of all three organized by bit offset. They all return a python list() of SBTypeMember objects. Usage: (lldb) script >>> t = lldb.target.FindFirstType("my_type") >>> for field in t.fields: ... print field >>> for vbase in t.vbases: ... print vbase >>> for base in t.bases: ... print base >>> for member in t.members: ... print member Also added new "is_bitfield" property to the SBTypeMember objects that will return the result of SBTypeMember::IsBitfield(), and "bitfield_bit_size" which will return the result of SBTypeMember::GetBitfieldSizeInBits(); I also fixed "SBTypeMember::GetOffsetInBytes()" to return the correct byte offset. llvm-svn: 161091
2012-07-27Added an lldb_private & equivalent SB API to send an AsyncInterrupt to the ↵Jim Ingham1-0/+3
event loop. Convert from calling Halt in the lldb Driver.cpp's input reader's sigint handler to sending this AsyncInterrupt so it can be handled in the event loop. If you are attaching and get an async interrupt, abort the attach attempt. Also remember to destroy the process if get interrupted while attaching. Getting this to work also required handing the eBroadcastBitInterrupt in a few more places in Process WaitForEvent & friends. <rdar://problem/10792425> llvm-svn: 160903
2012-07-20Add "vAttachOrWait" to debugserver, so you can implement "attach to the ↵Jim Ingham1-0/+6
process if it exists OR wait for it" without race conditions. Use that in lldb. llvm-svn: 160578
2012-07-13Add accessors on process to get & set the selected thread by IndexID (useful ↵Jim Ingham2-0/+27
since that's the one that "thread list" shows and it won't get reused even if the underlying system thread ID gets reused. llvm-svn: 160187
2012-06-29Added documentation for many of our python properties and also made the ↵Greg Clayton27-238/+239
property help show up by declaring the properties correctly. We previosly declared properties into a local "x" variable, what I didn't realize is that the help will use this as the property name for the help output. llvm-svn: 159468
2012-06-27Added the ability to read the dSYM plist file with source remappings even ↵Greg Clayton1-0/+3
when DebugSymbols isn't used to find the dSYM. We now parse the plist as XML in the MacOSX symbol vendor. Added the ability to get a section load address given a target which is needed for a previous checking which saves crashlogs. llvm-svn: 159298
2012-06-27Modify the ranges_access() helper function to be able to lookup the address ↵Greg Clayton1-0/+4
range in a block given an address. Since blocks can have multiple discontiguous ranges, it helps to be able to get the current address range for the current block in a frame. This can be used in code like: curr_block_range = lldb.frame.block.range[lldb.frame.addr] llvm-svn: 159289
2012-06-27Fixed the get_process_thread_list function to correctly return a list of all ↵Greg Clayton1-1/+1
threads in a process. llvm-svn: 159288
2012-06-27Make a way to set the result status for Python defined commands, and don't ↵Jim Ingham1-0/+3
overwrite the status of the result if the python command has set it. llvm-svn: 159273
2012-06-08Make raw & parsed commands subclasses of CommandObject rather than having ↵Jim Ingham1-0/+3
the raw version implement an Execute which was never going to get run and another ExecuteRawCommandString. Took the knowledge of how to prepare raw & parsed commands out of CommandInterpreter and put it in CommandObject where it belongs. Also took all the cases where there were the subcommands of Multiword commands declared in the .h file for the overall command and moved them into the .cpp file. Made the CommandObject flags work for raw as well as parsed commands. Made "expr" use the flags so that it requires you to be paused to run "expr". llvm-svn: 158235
2012-06-04rdar://problem/11584012Johnny Chen3-6/+4
Refactorings of watchpoint creation APIs so that SBTarget::WatchAddress(), SBValue::Watch(), and SBValue::WatchPointee() now take an additional 'SBError &error' parameter (at the end) to contain the reason if there is some failure in the operation. Update 'watchpoint set variable/expression' commands to take advantage of that. Update existing test cases to reflect the API change and add test cases to verify that the SBError mechanism works for SBTarget::WatchAddress() by passing an invalid watch_size. llvm-svn: 157964
2012-05-26Fix the comments about LLDB_DISABLE_PYTHON in the python swig shell scripts ↵Jim Ingham2-3/+8
to be more clear. llvm-svn: 157506
2012-05-24Fix missing Resources/Python directory for macosx build.Johnny Chen2-3/+3
llvm-svn: 157405