aboutsummaryrefslogtreecommitdiff
path: root/lldb/scripts/Python
AgeCommit message (Collapse)AuthorFilesLines
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
2012-05-24Change the "Debug" build to use the current MacOSX SDK. Fix the swig ↵Jim Ingham1-5/+6
builder to have an explicit short-circuit of the Python SWIG building, rather than relying on the SDKROOT being set. llvm-svn: 157363
2012-05-23Add SBProcess::GetNumSupportedHardwareWatchpoints() API and export it ↵Johnny Chen1-0/+3
through the Python scripting bridge. Add/modify some test cases. llvm-svn: 157353
2012-05-16Add GetID to the .i file.Jim Ingham1-0/+3
llvm-svn: 156927
2012-05-11Found one more place where the OkayToDiscard needs to be consulted.Jim Ingham1-0/+3
Also changed the defaults for SBThread::Step* to not delete extant plans. Also added some test cases to test more complex stepping scenarios. llvm-svn: 156667
2012-05-11Make every Python API __len__() method return a PyIntObject.Filipe Cabecinhas9-11/+12
swig 2.0+ seems to default to using PyLongObjects, but the __len__() method _must_ return a PyIntObject. llvm-svn: 156639
2012-05-11Fix SBProcess::ReadMemory's typemap to handle PyLongObjects.Filipe Cabecinhas1-5/+8
llvm-svn: 156638
2012-05-08Print out a notification when the process of a target other than the ↵Jim Ingham1-0/+3
currently selected target stops. llvm-svn: 156433
2012-05-08<rdar://problem/11239650> Fixing a bug where the SetValueFromCString() ↵Enrico Granata1-0/+3
method failed to operate on dynamic values. The fix consists in making the set operation fall through to the parent. We only actually allow this if the dynamic value is at a 0-offset from the parent, or the new value is 0. Other scenarios would need agreement on the actual meaning of the set operation (do we keep offsetting? do we just assume the user knows what they are doing?) so we prevent them, and let the expression parser deal with the complexity llvm-svn: 156422
2012-05-08<rdar://problem/11358639>Greg Clayton1-1/+1
Switch over to the "*-apple-macosx" for desktop and "*-apple-ios" for iOS triples. Also make the selection process for auto selecting platforms based off of an arch much better. llvm-svn: 156354
2012-04-25Remove the "-x" from the finish-swig-Python-LLDB.sh shell options so it ↵Greg Clayton1-1/+1
doesn't print out all of the commands when executing the shell script. Cleaned up the lldb.utils.symbolication, lldb.macosx.heap and lldb.macosx.crashlog. The lldb.macosx.heap can now build a dylib for the current triple into a temp directory and use it from there. llvm-svn: 155577
2012-04-25Returning data formatters to their previous working condition - Plus fixing ↵Enrico Granata1-0/+4
an issue that was preventing Python oneliners from executing llvm-svn: 155563
2012-04-25Now that we have an LLDB package, make the "lldb.macosx.crashlog" module ↵Greg Clayton1-5/+17
work with all of the new module paths. llvm-svn: 155528
2012-04-25Ensure that lldb/runtime is not a dead point in the Python package hierarchy ↵Enrico Granata1-2/+6
- This is a first preliminary step in fixing data formatters after Greg's changes to the Python resources on-disk layout llvm-svn: 155525
2012-04-25Maked LLDB into a package so we can import things without poluting the ↵Greg Clayton1-409/+100
global namespace. Enrico will follow this up with fixing the data formatter test cases that are failing. llvm-svn: 155514
2012-04-23Added the ability to specify the symbol file for a module when adding it to ↵Greg Clayton1-0/+6
a target. llvm-svn: 155384
2012-04-13Expose GetAddressClass() from both the SBAddress and SBInstruction so ↵Greg Clayton2-1/+7
clients can tell the difference between ARM/Thumb opcodes when disassembling ARM. llvm-svn: 154633
2012-04-11Added a property to get the dynamic type which uses the most permissive way ↵Greg Clayton1-2/+8
to get a dynamic type. llvm-svn: 154502
2012-04-02Export the ability to see if a symbol is externally visible and also if the ↵Greg Clayton1-1/+14
symbol was synthetically added to the symbol table (the symbol was not part of the symbol table itself but came from another section). llvm-svn: 153893
2012-03-29Part 1 of a series of fixes meant to improve reliability and increase ease ↵Enrico Granata1-0/+14
of bug fixing for data formatter issues. We are introducing a new Logger class on the Python side. This has the same purpose, but is unrelated, to the C++ logging facility The Pythonic logging can be enabled by using the following scripting commands: (lldb) script Logger._lldb_formatters_debug_level = {0,1,2,...} 0 = no logging 1 = do log 2 = flush after logging each line - slower but safer 3 or more = each time a Logger is constructed, log the function that has created it more log levels may be added, each one being more log-active than the previous by default, the log output will come out on your screen, to direct it to a file: (lldb) script Logger._lldb_formatters_debug_filename = 'filename' that will make the output go to the file - set to None to disable the file output and get screen logging back Logging has been enabled for the C++ STL formatters and for Cocoa class NSData - more logging will follow synthetic children providers for classes list and map (both libstdcpp and libcxx) now have internal capping for safety reasons this will fix crashers where a malformed list or map would not ever meet our termination conditions to set the cap to a different value: (lldb) script {gnu_libstdcpp|libcxx}.{map|list}_capping_size = new_cap (by default, it is 255) you can optionally disable the loop detection algorithm for lists (lldb) script {gnu_libstdcpp|libcxx}.list_uses_loop_detector = False llvm-svn: 153676
2012-03-27adding a summary for Objective-C type 'Class'Enrico Granata1-0/+14
llvm-svn: 153541
2012-03-27Synthetic values are now automatically enabled and active by default. ↵Enrico Granata1-28/+28
SBValue is set up to always wrap a synthetic value when one is available. A new setting enable-synthetic-value is provided on the target to disable this behavior. There also is a new GetNonSyntheticValue() API call on SBValue to go back from synthetic to non-synthetic. There is no call to go from non-synthetic to synthetic. The test suite has been changed accordingly. Fallout from changes to type searching: an hack has to be played to make it possible to use maps that contain std::string due to the special name replacement operated by clang Fixing a test case that was using libstdcpp instead of libc++ - caught as a consequence of said changes to type searching llvm-svn: 153495
2012-03-24Adding a new API call IsTypeComplete() to SBType. This call is meant to ↵Enrico Granata1-1/+6
check if the type has been previously completed or not (which is mostly interesting from a performance point of view) Adding a test case that checks that we do not complete types before due time. This should help us track cases similar to the cascading data formatters. llvm-svn: 153363
2012-03-19Massive enumeration name changes: a number of enums in ValueObject were not ↵Enrico Granata1-5/+13
following the naming pattern Changes to synthetic children: - the update(self): function can now (optionally) return a value - if it returns boolean value True, ValueObjectSyntheticFilter will not clear its caches across stop-points this should allow better performance for Python-based synthetic children when one can be sure that the child ValueObjects have not changed - making a difference between a synthetic VO and a VO with a synthetic value: now a ValueObjectSyntheticFilter will not return itself as its own synthetic value, but will (correctly) claim to itself be synthetic - cleared up the internal synthetic children architecture to make a more consistent use of pointers and references instead of shared pointers when possible - major cleanup of unnecessary #include, data and functions in ValueObjectSyntheticFilter itself - removed the SyntheticValueType enum and replaced it with a plain boolean (to which it was equivalent in the first place) Some clean ups to the summary generation code Centralized the code that clears out user-visible strings and data in ValueObject More efficient summaries for libc++ containers llvm-svn: 153061
2012-03-16Export the APIs submitted by Dawn to the Python bindings. Add a simple test ↵Johnny Chen3-1/+20
case for the SBModule.compile_unit_iter() API. llvm-svn: 152952
2012-03-12Added formatters for libc++ (http://libcxx.llvm.org):Enrico Granata1-0/+14
std::string has a summary provider std::vector std::list and std::map have both a summary and a synthetic children provider Given the usage of a custom namespace (std::__1::classname) for the implementation of libc++, we keep both libstdcpp and libc++ formatters enabled at the same time since that raises no conflicts and enabled for seamless transition between the two The formatters for libc++ reside in a libcxx category, and are loaded from libcxx.py (to be found in examples/synthetic) The formatters-stl test cases have been divided to be separate for libcxx and libstdcpp. This separation is necessary because (a) we need different compiler flags for libc++ than for libstdcpp (b) libc++ inlines a lot more than libstdcpp and some code changes were required to accommodate this difference llvm-svn: 152570
2012-03-06Added the ability to disassembly "count" instructions given a SBAddress. Greg Clayton1-0/+3
This was done in SBTarget: lldb::SBInstructionList lldb::SBTarget::ReadInstructions (lldb::SBAddress base_addr, uint32_t count); Also cleaned up a few files in the LLDB.framework settings. llvm-svn: 152152
2012-03-06Add a command and an SB API to create exception breakpoints. Make the break ↵Jim Ingham1-0/+12
output prettier for Exception breakpoints. llvm-svn: 152081
2012-03-05Copying a new file required for the updated formatters to work into ↵Enrico Granata1-0/+14
LLDB.framework llvm-svn: 152053
2012-03-05rdar://problem/10976649Johnny Chen1-0/+3
Add SBFrame::IsEqual(const SBFrame &that) method and export it to the Python binding. Alos add a test case test_frame_api_IsEqual() to TestFrames.py file. llvm-svn: 152050
2012-03-03added a new formatter for CF(Mutable)BitVectorEnrico Granata3-12/+178
fixed a few potential NULL-pointer derefs in ValueObject we have a way to provide docstrings for properties we add to the SWIG layer - a few of these properties have a docstring already, more will come in future commits added a new bunch of properties to SBData to make it more natural and Python-like to access the data they contain llvm-svn: 151962
2012-03-02(a) adding formatters for:Enrico Granata1-0/+14
NSTimeZone and CFTimeZonRef SEL and related types CFGregorianDate llvm-svn: 151866
2012-03-01(a) adding an introspection formatter for NS(Mutable)IndexSetEnrico Granata1-0/+14
(b) fixes and improvements to the formatters for NSDate and NSString (c) adding an introspection formatter for NSCountedSet (d) making the Objective-C formatters test cases pass on both 64 and 32 bit one of the test cases is marked as expected failure on i386 - support needs to be added to the LLDB core for it to pass llvm-svn: 151826
2012-02-29This commit:Enrico Granata2-91/+79
a) adds a Python summary provider for NSDate b) changes the initialization for ScriptInterpreter so that we are not passing a bulk of Python-specific function pointers around c) provides a new ScriptInterpreterObject class that allows for ref-count safe wrapping of scripting objects on the C++ side d) contains much needed performance improvements: 1) the pointer to the Python function generating a scripted summary is now cached instead of looked up every time 2) redundant memory reads in the Python ObjC runtime wrapper are eliminated 3) summaries now use the m_summary_str in ValueObject to store their data instead of passing around ( == copying) an std::string object e) contains other minor fixes, such as adding descriptive error messages for some cases of summary generation failure llvm-svn: 151703
2012-02-24Added some missing accessors to the SBAttachInfo for user and group IDGreg Clayton1-0/+18
getting, setting, and checking. llvm-svn: 151408
2012-02-24Fixed the launching code when using the new SBLaunchInfo.Greg Clayton1-21/+2
llvm-svn: 151392
2012-02-24Added the new way we will eventually do all attaches and launches. First clientsGreg Clayton1-0/+183
will fill out either a SBLaunchInfo or SBAttachInfo class, then call: SBProcess SBTarget::Launch (SBLaunchInfo &, SBError &); SBProcess SBTarget::Attach (SBAttachInfo &, SBError &); The attach is working right now and allows the ability to set many filters such as the parent process ID, the user/group ID, the effective user/group ID, and much more. The launch is not yet working, but I will get this working soon. By changing our launch and attach calls to take an object, it allows us to add more capabilities to launching and attaching without having to have launch and attach functions that take more and more arguments. Once this is all working we will deprecated the older launch and attach fucntions and eventually remove them. llvm-svn: 151344
2012-02-23This patch provides a set of formatters for most of the commonly used Cocoa ↵Enrico Granata1-1/+240
classes. The formatter for NSString is an improved version of the one previously shipped as an example, the others are new in design and implementation. A more robust and OO-compliant Objective-C runtime wrapper is provided for runtime versions 1 and 2 on 32 and 64 bit. The formatters are contained in a category named "AppKit", which is not enabled at startup. llvm-svn: 151299