Commit Graph

64 Commits

Author SHA1 Message Date
Greg Clayton 42a6eb7195 Make the script work again from the command line as long as the PYTHONPATH
environment variable it set to include a path to lldb.py.

Also fixed the case where the executable can't be located and doesn't match
what is installed on the current system. It will still symbolicate the other
frames, and will just show what was originally in the crash log file.

Also removed the --crash-log option so the arguments to the "crashlog"
command are one or more paths to crash logs.

Fixed the script to "auto-install" itself when loaded from the embedded
script interpreter. Now you only need to import the module and the
command is ready for use.

llvm-svn: 148561
2012-01-20 19:25:32 +00:00
Greg Clayton 3d8d3db34e More fixed to verify if a file in the crash log is installed in the current
system and also deal with dsymForUUID being available on the network, locally,
and not at all.

llvm-svn: 148534
2012-01-20 06:12:47 +00:00
Greg Clayton a32bfbeeda Improved the regular expressions to handle "+" characters being at the front
of the identifier name in the binary images section. Improved the regular
expression for the frames.

Added a new file "crashlog.lldb" which can be sourced with "command source"
that will import the module and set itself up to be used as a command.

llvm-svn: 148529
2012-01-20 03:32:35 +00:00
Greg Clayton aa9d02b17c Modified the symbolicate-crash.py so it can be imported into python as a
module (you can't import a module with a '-' in it) and also added a
Symbolcate(...) top level function so it can be imported and used as an
LLDB command.

Then you can import the module and map a "crashlog" command (for darwin
use only currently) to the python function "crashlog.Symbolicate":

(lldb) script import crashlog
(lldb) command script add -f crashlog.Symbolicate crashlog

Then use it to symbolicate:

(lldb) crashlog --crash-log /path/to/foo.crash

The crash log will then get symbolicated and inline frames will be added to
the crash log and the frames will be displayed. The crash log currently will
only try and fetch and setup the target images requires in order to do the
symbolication.

This will need to be iterated upon, but it is getting close to being useful
so I am going to check this in.

llvm-svn: 148528
2012-01-20 03:15:45 +00:00
Greg Clayton 415c72cbfb Add some usage documentation to the top of the source file.
llvm-svn: 148527
2012-01-20 02:10:52 +00:00
Greg Clayton 5d34322811 Added a new tool that can be loaded into a user space darwin application and allows you
to find data on the heap. To use this, make the project and then when stopped in your
lldb debug session:

(lldb) process load /path/to/libheap.dylib
(lldb) find_pointer_in_heap (0x112233000000)

This will grep everything in all active allocation blocks and print and malloc blocks that contain the pointer 0x112233000000.

This can also work for c strings:

(lldb) find_cstring_in_heap ("hello")

llvm-svn: 148523
2012-01-20 01:31:24 +00:00
Greg Clayton d5e4edbfbf More improvements to not follow child processes and improved logging that always shows the process info.
llvm-svn: 148257
2012-01-16 22:21:29 +00:00
Greg Clayton 662125ae93 Added some fixes for the fd interposing dylib:
- don't strip too many frames from the backtrace when logging close backtraces
- cleanup some logging messages

llvm-svn: 148195
2012-01-14 18:18:31 +00:00
Johnny Chen 38ef9a9b94 Fix make errors (define the DYLIB_ONLY make variable).
llvm-svn: 147823
2012-01-10 01:29:35 +00:00
Greg Clayton 33289908f9 Added a file descriptor interposing library for darwin. This can catch all
functions that can create file descriptors and close them. It will warn when
there close file descriptor call that returns with EBADF and show the 
corresponding stack backtraces that caused the issue. It will also log all
file descriptor create and delete calls. See the comments at the top of
FDInterposing.cpp for all of the details.

llvm-svn: 147816
2012-01-10 00:29:36 +00:00
Johnny Chen 8763780961 Add an example customization directory which uses a binutils.py module to provide
commands to print the binary representaion of an integer.

llvm-svn: 143252
2011-10-28 23:30:28 +00:00
Johnny Chen a4c6a7b2b6 Remove extra newline in the docstring.
llvm-svn: 143228
2011-10-28 21:23:58 +00:00
Johnny Chen 2a781097f3 Add a binutils.py which contains Python functions for displaying bit representation of numbers.
llvm-svn: 143173
2011-10-28 01:09:53 +00:00
Johnny Chen 7596f9373a Add 'cd -' feature to change to the previous working directory.
llvm-svn: 141846
2011-10-13 01:20:34 +00:00
Johnny Chen 724e62bb4a Prepend '~' to the sys.path so that ~/utils.py takes precedence.
llvm-svn: 141817
2011-10-12 21:51:58 +00:00
Johnny Chen 7f01ac39b9 Patch by Enrico to provide an example of 'import' commnad for importing .py/.pyc files.
llvm-svn: 141810
2011-10-12 20:47:04 +00:00
Johnny Chen de6ade01d0 Add an examples/customization directory and add a subdirectory pwd-cd-and-system
which contains the lldb init file and a utils.py Python module in order to add
the 'pwd', 'cd', and 'system' lldb commands.

llvm-svn: 141799
2011-10-12 19:16:06 +00:00
Johnny Chen 1c6c43f1dc Allow the crash log file path to contain an initial tilde component.
llvm-svn: 141340
2011-10-06 23:36:00 +00:00
Johnny Chen e7e4ac4d8d Simplify code to print symbols and sections within a module using the built-in iterators.
llvm-svn: 141326
2011-10-06 22:48:56 +00:00
Greg Clayton 1ed54f50c5 Cleaned up the the code that figures out the inlined stack frames given a
symbol context that represents an inlined function. This function has been
renamed internally to:

bool
SymbolContext::GetParentOfInlinedScope (const Address &curr_frame_pc, 
                                        SymbolContext &next_frame_sc, 
                                        Address &next_frame_pc) const;
                                        
And externally to:

SBSymbolContext
SBSymbolContext::GetParentOfInlinedScope (const SBAddress &curr_frame_pc, 
                                          SBAddress &parent_frame_addr) const;

The correct blocks are now correctly calculated.

Switched the stack backtracing engine (in StackFrameList) and the address
context printing over to using the internal SymbolContext::GetParentOfInlinedScope(...) 
so all inlined callstacks will match exactly.

llvm-svn: 140910
2011-10-01 00:45:15 +00:00
Greg Clayton fb0655ef59 Fixed the public and internal disassembler API to be named correctly:
const char *
SBInstruction::GetMnemonic()

const char *
SBInstruction::GetOperands()

const char *
SBInstruction::GetComment()

Fixed the symbolicate example script and the internals.

llvm-svn: 140591
2011-09-27 00:58:45 +00:00
Greg Clayton a6e429217f Fixes for a few different versions of the darwin crash log.
llvm-svn: 140554
2011-09-26 19:17:49 +00:00
Greg Clayton 2f9ca7b1f5 Added an example that symbolicates symbol information. This file
is mostly geared towards darwin crash logs at the moment, though
it could be made more generic with a few tweaks. 

The symbolicate-crash.py script will make a target given a crash log
and then symbolicate all frames and expand any frames that had inlined
functions in them to show all frames back to the concrete function. It
will also disassemble around the crash site.

llvm-svn: 140544
2011-09-26 18:39:23 +00:00
Enrico Granata e6c42ad243 Objective-C runtime wrapper
llvm-svn: 139372
2011-09-09 16:47:15 +00:00
Enrico Granata 64997d6c0e More documentation changes (WIP)
llvm-svn: 138421
2011-08-24 01:32:46 +00:00
Enrico Granata db3485cd06 Short option for --summary-string in 'type summary add' is now -s. This might be a breaking change for those who have summaries defined.
llvm-svn: 138331
2011-08-23 16:13:35 +00:00
Enrico Granata 23e578c94a Fixing a startup error
llvm-svn: 138237
2011-08-22 16:38:44 +00:00
Enrico Granata 5a61fc0da5 Exception-awareness for gnu_libstdcpp formatters ; Documentation update
llvm-svn: 138236
2011-08-22 16:10:25 +00:00
Enrico Granata c482a19294 First round of code cleanups:
- all instances of "vobj" have been renamed to "valobj"
 - class Debugger::Formatting has been renamed to DataVisualization (defined in FormatManager.h/cpp)
   The interface to this class has not changed
 - FormatCategory now uses ConstString's as keys to the navigators instead of repeatedly casting
   from ConstString to const char* and back all the time
   Next step is making the same happen for categories themselves
 - category gnu-libstdc++ is defined in the constructor for a FormatManager
   The source code for it is defined in gnu_libstdcpp.py, drawn from examples/synthetic at compile time
   All references to previous 'osxcpp' name have been removed from both code and file names
Functional changes:
 - the name of the option to use a summary string for 'type summary add' has changed from the previous --format-string
   to the new --summary-string. It is expected that the short option will change from -f to -s, and -s for --python-script
   will become -o

llvm-svn: 137886
2011-08-17 22:13:59 +00:00
Enrico Granata ce68b02c99 CFString.py now shows contents in a more NSString-like way (e.g. you get @"Hello" instead of "Hello")
new --raw-output (-R) option to frame variable prevents using summaries and synthetic children
 other future formatting enhancements will be excluded by using the -R option
 test case enhanced to check that -R works correctly

llvm-svn: 137185
2011-08-09 23:50:01 +00:00
Enrico Granata 4443d8c321 changing CFString.py to reflect the new behavior of CreateValueFromAddress
llvm-svn: 136887
2011-08-04 17:14:03 +00:00
Enrico Granata 15dbe2a491 copying std:: SynthProviders in examples/synthetic
llvm-svn: 136863
2011-08-04 02:35:14 +00:00
Enrico Granata 6fd87d5d33 APIs to GetValueAsSigned/Unsigned() in SBValue now also accept an SBError parameter to give more info about any problem
The synthetic children providers now use the new (safer) APIs to get the values of objects
As a side effect, fixed an issue in ValueObject where ResolveValue() was not always updating the value before reading it

llvm-svn: 136861
2011-08-04 01:41:02 +00:00
Greg Clayton fc1aa292ad Cleaned up the NSString summary formatter to not print "<invalid object>" when
we have a nil NSString *. Also added blank lines between functions in the
CFString.py files.

llvm-svn: 136554
2011-07-30 01:47:41 +00:00
Enrico Granata 3bcee02643 changes in the new GetMinimumLanguages() ; robustness improvements in the CFStringSynthProvider object ; made a CFString_SummaryProvider function you can use if all you care about is the summary string for your NSString objects
llvm-svn: 136544
2011-07-29 23:59:08 +00:00
Enrico Granata ebbe5643b2 new synthetic children provider for CFString and related classes ; test case for it
llvm-svn: 136525
2011-07-29 21:31:46 +00:00
Enrico Granata 6f3533fb1d Public API changes:
- Completely new implementation of SBType
 - Various enhancements in several other classes
Python synthetic children providers for std::vector<T>, std::list<T> and std::map<K,V>:
 - these return the actual elements into the container as the children of the container
 - basic template name parsing that works (hopefully) on both Clang and GCC
 - find them in examples/synthetic and in the test suite in functionalities/data-formatter/data-formatter-python-synth
New summary string token ${svar :
 - the syntax is just the same as in ${var but this new token lets you read the values
   coming from the synthetic children provider instead of the actual children
 - Python providers above provide a synthetic child len that returns the number of elements
   into the container
Full bug fix for the issue in which getting byte size for a non-complete type would crash LLDB
Several other fixes, including:
 - inverted the order of arguments in the ClangASTType constructor
 - EvaluationPoint now only returns SharedPointer's to Target and Process
 - the help text for several type subcommands now correctly indicates argument-less options as such

llvm-svn: 136504
2011-07-29 19:53:35 +00:00
Enrico Granata 7703020e1b another possible incarnation of a C++ string straight from llvm-gcc build 5658
llvm-svn: 136293
2011-07-27 23:33:58 +00:00
Enrico Granata e594b1aaec make the C++stdlib string summary work even if for some reason std::basic_string<char> ends up in the debug info instead of std::string
llvm-svn: 136246
2011-07-27 19:01:14 +00:00
Johnny Chen 7af9a33d45 Add newline at end of file.
llvm-svn: 136028
2011-07-26 00:24:30 +00:00
Johnny Chen f6fb627ffe Minor modification.
llvm-svn: 136026
2011-07-26 00:22:58 +00:00
Johnny Chen bb034f9f5d Add an example type summary -- for lldb::ConnectionStatus.
llvm-svn: 135997
2011-07-25 22:47:54 +00:00
Jim Ingham e3846fd16a Don't delete & remake the exception breakpoints every time you need them. Make them once & enable/disable
them as appropriate.
Also reformatted the lldb summaries to make them easier to read, and added one.  I'll do more as I get time.

llvm-svn: 135827
2011-07-23 00:12:05 +00:00
Enrico Granata 6d54d89af1 essentials contains two small summaries that you might really want to use; lldb contains some basic summaries for use in debugging LLDB itself. to use them, you must type category enable lldb
llvm-svn: 135653
2011-07-21 01:40:17 +00:00
Johnny Chen 3d3a7cf563 Add usage docstring to SBValue.h, and minor update of docstrings for SBValueList.h.
llvm-svn: 135230
2011-07-15 00:27:47 +00:00
Johnny Chen d4deaf2677 Remove unnecessary 'import' statement.
llvm-svn: 134519
2011-07-06 19:09:25 +00:00
Caroline Tice 2e9dd93e26 Add source files for Python scripting example (coming soon).
llvm-svn: 132512
2011-06-02 23:23:47 +00:00
Johnny Chen b0b8853a2e Add a little spice to the script to allow us to specify a function name to break at and to disassemble.
Usage: disasm.py [-n name] executable-image
       By default, it breaks at and disassembles the 'main' function.
llvm-svn: 132090
2011-05-25 22:29:23 +00:00
Johnny Chen 2dda91690f Add a little twist to the disasm.py script so that it is possible to terminate the inferior process
by entering 'Ctrl-D' or 'quit'.

llvm-svn: 132088
2011-05-25 22:01:16 +00:00
Johnny Chen 2cf62497b3 Modified to use SBTarget.LaunchSimple() API.
llvm-svn: 132082
2011-05-25 20:56:32 +00:00