aboutsummaryrefslogtreecommitdiff
path: root/lldb/scripts/Python
AgeCommit message (Collapse)AuthorFilesLines
2015-01-23Fix CMake build - add readline dependency on ${PYTHON_LIBRARY}.Oleksiy Vyalov1-0/+2
llvm-svn: 226933
2014-12-29[cmake/multilib] Teach LLDB to respect the multlib LLVM_LIBDIR_SUFFIXChandler Carruth1-2/+2
variable (now provided both by the normal parent LLVM CMake files and by the LLVMConfig.cmake file used by the standalone build). This allows LLDB to build into and install into correctly suffixed libdirs. This is especially significant for LLDB because the python extension building done by CMake directly uses multilib suffixes when the host OS does, and the host OS will not always look back and forth between them. As a consequence, before LLVM, Clang, and LLDB (and every other subproject) had support for using LLVM_LIBDIR_SUFFIX, you couldn't build or install LLDB on a multilib system with its python extensions enabled. With this patch (on top of all the others I have submitted throughout the project), I'm finally able to build and install LLDB on my system with Python support enabled. I'm also able to actually run the LLDB test suite, etc. Now, a *huge* number of the tests still fail on my Linux system, but hey, actually running them and them testing the debugger is a huge step forward. =D llvm-svn: 224930
2014-12-17Provide CreateValueFromData,Expression at the SBTarget level as well as the ↵Enrico Granata1-0/+6
SBValue level; and also make all the implenentations agree on using the matching ValueObject::Create instead of doing code copypastas llvm-svn: 224460
2014-12-16Add the ability to tag one or more breakpoints with a name. TheseJim Ingham1-0/+12
names can then be used in place of breakpoint id's or breakpoint id ranges in all the commands that operate on breakpoints. <rdar://problem/10103959> llvm-svn: 224392
2014-12-15Provide a SBFrame.register/.reg helper on the Python side of SBFrame to vend ↵Enrico Granata1-0/+24
a flattened view of registers Our actual view of registers is a set of register sets, each one of which contains a subset of the actual registers This makes trivial scripting operations tedious ("I just want to read r7!") This helper allows things like: print lldb.frame.reg["r7"] Fixes rdar://19185662 llvm-svn: 224275
2014-12-08Add the ability for an SBValue to create a persisted version of itself.Enrico Granata1-0/+3
Such a persisted version is equivalent to evaluating the value via the expression evaluator, and holding on to the $n result of the expression, except this API can be used on SBValues that do not obviously come from an expression (e.g. are the result of a memory lookup) Expose this via SBValue::Persist() in our public API layer, and ValueObject::Persist() in the lldb_private layer Includes testcase Fixes rdar://19136664 llvm-svn: 223711
2014-11-22Enable Python summaries to use custom SBTypeSummaryOptions if the user is so ↵Enrico Granata2-1/+17
inclined. Updates to the webdoc will follow llvm-svn: 222593
2014-11-22Fix mispelled 'ling' Python property to be 'line' inJason Molenda2-2/+2
SBLineEntry and SBDeclaration. Patch from Chris Willmore. <rdar://problem/19054323> llvm-svn: 222592
2014-11-21Per off-list feedback, this API returns the *first* value with a given name, ↵Enrico Granata1-1/+1
not the *only* one. Rename it to reflect that llvm-svn: 222582
2014-11-21Add an API on SBValueList to find the first value with a given name stored ↵Enrico Granata1-0/+4
in the list llvm-svn: 222576
2014-11-18Shuffle APIs around a little bit, so that if you pass custom summary ↵Enrico Granata1-1/+2
options, we don't end up caching the summary hence obtained. You may want to obtain an uncapped summary, but this should not be reflected in the summary we cache. The drawback is that we don't cache as aggressively as we could, but at least you get to have different summaries with different options without having to reset formatters or the SBValue at each step llvm-svn: 222280
2014-11-18Add documentation for the SBTarget::ReadInstructions andJason Molenda1-2/+27
SBTarget::GetInstructions APIs so it's a little clearer to understand which should be used. <rdar://problem/18787018> llvm-svn: 222225
2014-11-17Add APIs on SBFunction and SBCompileUnit to inquire about the language type ↵Enrico Granata2-0/+6
that the function/compile unit is defined in llvm-svn: 222189
2014-11-17Fixed more fallout from running the test suite remotely on iOS devices.Greg Clayton1-0/+12
Fixed include: - Change Platform::ResolveExecutable(...) to take a ModuleSpec instead of a FileSpec + ArchSpec to help resolve executables correctly when we have just a path + UUID (no arch). - Add the ability to set the listener in SBLaunchInfo and SBAttachInfo in case you don't want to use the debugger as the default listener. - Modified all places that use the SBLaunchInfo/SBAttachInfo and the internal ProcessLaunchInfo/ProcessAttachInfo to not take a listener as a parameter since it is in the launch/attach info now - Load a module's sections by default when removing a module from a target. Since we create JIT modules for expressions and helper functions, we could end up with stale data in the section load list if a module was removed from the target as the section load list would still have entries for the unloaded module. Target now has the following functions to help unload all sections a single or multiple modules: size_t Target::UnloadModuleSections (const ModuleList &module_list); size_t Target::UnloadModuleSections (const lldb::ModuleSP &module_sp); llvm-svn: 222167
2014-11-13Do not override the existing definition of addr_size when adding new ↵Enrico Granata1-2/+2
properties to SBTarget. Fixes rdar://18963842 llvm-svn: 221850
2014-11-08LLGS Android target support - for Andy Chien : http://reviews.llvm.org/D6166Shawn Best1-1/+1
llvm-svn: 221570
2014-11-06Introduce the notion of "type summary options" as flags that can be passed ↵Enrico Granata2-1/+28
down to individual summary formatters to alter their behavior in a formatter-dependent way Two flags are introduced: - preferred display language (as in, ObjC vs. C++) - summary capping (as in, should a limit be put to the amount of data retrieved) The meaning - if any - of these options is for individual formatters to establish The topic of a subsequent commit will be to actually wire these through to individual data formatters llvm-svn: 221482
2014-10-28Add a few functions to SBType to handle arrays and typedefs. Fixes ↵Enrico Granata1-0/+9
rdar://12675166 llvm-svn: 220824
2014-10-28Add a feature where a string data formatter can now be partially composed of ↵Enrico Granata1-0/+38
Python summary functions This works similarly to the {thread/frame/process/target.script:...} feature - you write a summary string, part of which is ${var.script:someFuncName} someFuncName is expected to be declared as def someFuncName(SBValue,otherArgument) - essentially the same as a summary function Since . -> [] are the only allowed separators, and % is used for custom formatting, .script: would not be a legitimate symbol anyway, which makes this non-ambiguous llvm-svn: 220821
2014-10-22Added functions to the C++ API, for the benefit of non-8-bit byte architectures.Matthew Gardiner2-0/+105
New functions to give client applications to tools to discover target byte sizes for addresses prior to ReadMemory. Also added GetPlatform and ReadMemory to the SBTarget class, since they seemed to be useful utilities to have. Each new API has had a test case added. http://reviews.llvm.org/D5867 llvm-svn: 220372
2014-10-21Expose the type-info flags at the public API layer. These flags provide much ↵Enrico Granata1-0/+3
more informational content to consumers of the LLDB API than the existing TypeClass. Part of the fix for rdar://18517593 llvm-svn: 220322
2014-10-21Add typemaps to handle the transformation of Python list of strings into a ↵Enrico Granata1-0/+74
'char const **'. This fixes zephyr's issue with SBTarget::Launch without splitting the API into multiple names llvm-svn: 220306
2014-10-16Remove unnecessary update of 'name' local.Jason Molenda1-1/+0
clang static analyzer fixit. llvm-svn: 219892
2014-10-14This adds a "batch mode" to lldb kinda like the gdb batch mode. It will ↵Jim Ingham2-1/+11
quit the debugger after all the commands have been executed except if one of the commands was an execution control command that stopped because of a signal or exception. Also adds a variant of SBCommandInterpreter::HandleCommand that takes an SBExecutionContext. That way you can run an lldb command targeted at a particular target, thread or process w/o having to select same before running the command. Also exposes CommandInterpreter::HandleCommandsFromFile to the SBCommandInterpreter API, since that seemed generally useful. llvm-svn: 219654
2014-10-11Add a IsInstrumentationRuntimePresent SB APIKuba Brecka1-0/+3
Reviewed at http://reviews.llvm.org/D5738 This adds an SB API into SBProcess: bool SBProcess::IsInstrumentationRuntimePresent(InstrumentationRuntimeType type); which simply tells whether a particular InstrumentationRuntime (read "ASan") plugin is present and active. llvm-svn: 219560
2014-10-11Rework the way we pass "run multiple command" options to the various API's thatJim Ingham2-3/+70
do that (RunCommandInterpreter, HandleCommands, HandleCommandsFromFile) to gather the options into an options class. Also expose that to the SB API's. Change the way the "-o" options to the lldb driver are processed so: 1) They are run synchronously - didn't really make any sense to run the asynchronously. 2) The stop on error 3) "quit" in one of the -o commands will not quit lldb - not the command interpreter that was running the -o commands. I added an entry to the run options to stop-on-crash, but I haven't implemented that yet. llvm-svn: 219553
2014-10-10LLDB AddressSanitizer instrumentation runtime plugin, breakpint on error and ↵Kuba Brecka1-0/+8
report data extraction Reviewed at http://reviews.llvm.org/D5592 This patch gives LLDB some ability to interact with AddressSanitizer runtime library, on top of what we already have (historical memory stack traces provided by ASan). Namely, that's the ability to stop on an error caught by ASan, and access the report information that are associated with it. The report information is also exposed into SB API. More precisely this patch... adds a new plugin type, InstrumentationRuntime, which should serve as a generic superclass for other instrumentation runtime libraries, these plugins get notified when modules are loaded, so they get a chance to "activate" when a specific dynamic library is loaded an instance of this plugin type, AddressSanitizerRuntime, which activates itself when it sees the ASan dynamic library or founds ASan statically linked in the executable adds a collection of these plugins into the Process class AddressSanitizerRuntime sets an internal breakpoint on __asan::AsanDie(), and when this breakpoint gets hit, it retrieves the report information from ASan this breakpoint is then exposed as a new StopReason, eStopReasonInstrumentation, with a new StopInfo subclass, InstrumentationRuntimeStopInfo the StopInfo superclass is extended with a m_extended_info field (it's a StructuredData::ObjectSP), that can hold arbitrary JSON-like data, which is the way the new plugin provides the report data the "thread info" command now accepts a "-s" flag that prints out the JSON data of a stop reason (same way the "-j" flag works now) SBThread has a new API, GetStopReasonExtendedInfoAsJSON, which dumps the JSON string into a SBStream adds a test case for all of this I plan to also get rid of the original ASan plugin (memory history stack traces) and use an instance of AddressSanitizerRuntime for that purpose. Kuba llvm-svn: 219546
2014-10-08Add a (Python only) lldb.SBSyntheticValueProvider class to our API surfaceEnrico Granata1-0/+24
On a suggestion from Jim Ingham, this class allows you to very easily define synthetic child providers that return a synthetic value (in the sense of r219330), but no children Also, document this new feature in our www docs llvm-svn: 219337
2014-10-08Extend synthetic children to produce synthetic values (as in, those that ↵Enrico Granata1-0/+28
GetValueAsUnsigned(), GetValueAsCString() would return) The way to do this is to write a synthetic child provider for your type, and have it vend the (optional) get_value function. If get_value is defined, and it returns a valid SBValue, that SBValue's value (as in lldb_private::Value) will be used as the synthetic ValueObject's Value The rationale for doing things this way is twofold: - there are many possible ways to define a "value" (SBData, a Python number, ...) but SBValue seems general enough as a thing that stores a "value", so we just trade values that way and that keeps our currency trivial - we could introduce a new level of layering (ValueObjectSyntheticValue), a new kind of formatter (synthetic value producer), but that would complicate the model (can I have a dynamic with no synthetic children but synthetic value? synthetic value with synthetic children but no dynamic?), and I really couldn't see much benefit to be reaped from this added complexity in the matrix On the other hand, just defining a synthetic child provider with a get_value but returning no actual children is easy enough that it's not a significant road-block to adoption of this feature Comes with a test case llvm-svn: 219330
2014-10-01Allow Python commands to optionally take an SBExecutionContext argument in ↵Enrico Granata2-2/+16
case they need to handle 'where they want to act' separately from the notion of 'currently-selected entity' that is associated to the debugger. Do this in an (hopefully) non-breaking way by running an argcount check before passing in the new argument. Update the test case to also check for this new feature. www update to follow llvm-svn: 218834
2014-10-01Add an accessor to PyCallable that allows one to determine the count of ↵Enrico Granata1-1/+26
arguments that a Python function allows, and whether varargs/kwargs are also accepted by the same function llvm-svn: 218812
2014-10-01Add a new SBExecutionContext class that wraps an ExecutionContextRef. This ↵Enrico Granata2-0/+44
class is a convenient way at the API level to package a target,process,thread and frame all together - or just a subset of those llvm-svn: 218808
2014-09-29This checkin is the first step in making the lldb thread stepping mechanism ↵Jim Ingham5-0/+254
more accessible from the user level. It adds the ability to invent new stepping modes implemented by python classes, and to view the current thread plan stack and to some extent alter it. I haven't gotten to documentation or tests yet. But this should not cause any behavior changes if you don't use it, so its safe to check it in now and work on it incrementally. llvm-svn: 218642
2014-09-23android: add a command script to help display mixed Java/native backtraces.Todd Fiala1-0/+192
This script supports displaying developer-focused backtraces when working with mixed Java and C/C++ stack frames within lldb. On Android, this represents just about every app, since all apps start in Java code. The script currently supports the Art JVM when run on host-side x86_64 and x86, but does require a patch not yet accepted in AOSP: AOSP patch: https://android-review.googlesource.com/#/c/106523/ The backtraces will hide Art VM machinery for interpreted and AOT code and display the Java file/line numbers for Java code, while displaying native backtrace info for native frames. Effectively the developer will get an app-centric view of the call stack. This script is not yet tested on device-side Art nor is it tested on any architecture other than x86_64 or x86 32-bit. Several changes were needed on the AOSP side to enable it to work properly for x86_64 and x86, so it is quite likely we'll need to do something similar for other cpu architectures as well. Change by Tong Shen llvm-svn: 218315
2014-09-19Fix for 218140 for SBTarget.i, the added functions were in the wrong class ↵Carlo Kok1-10/+11
definition llvm-svn: 218147
2014-09-19Adds two new functions to SBTarget FindGlobalVariables and ↵Carlo Kok1-0/+9
FindGlobalFunctions that lets you search by name, by regular expression and by starts with. llvm-svn: 218140
2014-09-19Extend the member function discovery APIs to also support Objective-C as ↵Enrico Granata1-0/+9
well as C++ For the Objective-C case, we do not have a "function type" notion, so we actually end up wrapping the clang ObjCMethodDecl in the Impl object, and ask function-y questions of it In general, you can always ask for return type, number of arguments, and type of each argument using the TypeMemberFunction layer - but in the C++ case, you can also acquire a Type object for the function itself, which instead you can't do in the Objective-C case llvm-svn: 218132
2014-09-15Change SBType.GetMemberFunctionAtIndex() to return an object describing the ↵Enrico Granata1-1/+30
member function in more detail. A type was really quite vague. This now has function name, kind, as well as function type llvm-svn: 217828
2014-09-12Add logic to LLDB to figure out the types of member functions of C++ ↵Enrico Granata1-0/+6
classes. Add plumbing for that all the way up to the SB layer llvm-svn: 217701
2014-09-06Implement ASan history threads in SB APIKuba Brecka1-0/+3
Reviewed at http://reviews.llvm.org/D5219 and http://lists.cs.uiuc.edu/pipermail/lldb-commits/Week-of-Mon-20140901/012809.html llvm-svn: 217300
2014-09-06Expose the ability to retrieve the result of a type validator via the SB ↵Enrico Granata1-0/+3
API. To keep it simple, do not expose the pair, but just return a NULL string for success, and a non-NULL string for error; If we were to decide to expose the pair, we would need an SBTypeValidatorResult, which is fine, but it should come as part of exposing type validators through the SB API rather than as a one-off thing. So, KISS for now llvm-svn: 217299
2014-09-06Expose ThreadCollection in SB APIKuba Brecka3-0/+42
Reviewed at http://reviews.llvm.org/D5218 and http://lists.cs.uiuc.edu/pipermail/lldb-commits/Week-of-Mon-20140901/012828.html llvm-svn: 217296
2014-08-27Make it clear that the load_addr property on SBAddress relies on lldb.target, Jim Ingham1-1/+1
and so can only be used in the script interpreter. llvm-svn: 216625
2014-08-11Fix some typos:Sylvestre Ledru1-1/+1
* transfered => transferred * unkown => unknown * sucessfully => successfully llvm-svn: 215367
2014-08-08Add an option to suppress the persistent result variable when running ↵Jim Ingham1-0/+9
EvaluateExpression from Python. If you don't need to refer to the result in another expression, there's no need to bloat the persistent variable table with them since you already have the result SBValue to work with. <rdar://problem/17963645> llvm-svn: 215244
2014-08-02Make the swig generation script use the correct python executable.Zachary Turner1-1/+2
It was hardcoding the value "python", which will end up at best getting a different python executable (if the user has overridden the value of PYTHON_EXECUTABLE), and at worst encountering an error (if there is no copy of python on the system path). This patch changes the script to use sys.executable so that it runs the sub-script with the same executable that it was run with. llvm-svn: 214618
2014-07-30(no commit message)Greg Clayton1-0/+6
llvm-svn: 214319
2014-07-17Create an _d suffixed symlink when doing a debug Windows build.Zachary Turner1-1/+8
_lldb is built as an extension module on Windows. Normally to load an extension module named 'foo', Python would look for the file 'foo.pyd'. However, when a debug interpreter is used, Python will look for the file 'foo_d.pyd'. This change checks the build configuration and creates the correct symlink name based on the build configuration. llvm-svn: 213306
2014-07-11Enable the ability to enable debug info generation when evaluating expressions.Greg Clayton1-1/+8
llvm-svn: 212792
2014-07-10Get the python scripting interface working on Windows.Zachary Turner1-7/+4
This patch fixes a number of issues with embedded Python on Windows. In particular: 1) The script that builds the python modules was normalizing the case of python filenames during copies. The module name is the filename, and is case-sensitive, so this was breaking code. 2) Changes the build to not attempt to link against python27.lib (e.g. the release library) when linking against msvcrt debug library. Doing a debug build of LLDB with embedded python support now requires you to provide your own self-compiled debug version of python. 3) Don't import termios when initializing the interpreter. This is part of a larger effort to remove the dependency on termios since it is not available on Windows. This particular instance was unnecessary and unused. Reviewed by: Todd Fiala Differential Revision: http://reviews.llvm.org/D4441 llvm-svn: 212785