Revision tags: llvmorg-3.5.0-rc2, llvmorg-3.5.0-rc1 |
|
#
40411165 |
| 16-Jul-2014 |
Zachary Turner <zturner@google.com> |
Fix some warnings in the Windows build.
llvm-svn: 213194
|
#
d37221dc |
| 09-Jul-2014 |
Zachary Turner <zturner@google.com> |
Revert "Fix broken tests due to new error output."
This reverts commit ec7c94f8e6860968d384b578e5564a9c55c80b4a and re-enables OptionValidators.
llvm-svn: 212627
|
#
7a88ec9a |
| 08-Jul-2014 |
Jim Ingham <jingham@apple.com> |
Add the ability to provide a "count" option to the various "thread step-*" operations. Only step-inst and step-inst are currently supported, the rest just warn that they are not supported if you try
Add the ability to provide a "count" option to the various "thread step-*" operations. Only step-inst and step-inst are currently supported, the rest just warn that they are not supported if you try to provide a count.
llvm-svn: 212559
show more ...
|
#
9734280f |
| 08-Jul-2014 |
Todd Fiala <todd.fiala@gmail.com> |
Fix broken tests due to new error output.
This reverses out the options validators changes. We'll get these back in once the changes to the output can be resolved.
Restores broken tests on FreeBSD
Fix broken tests due to new error output.
This reverses out the options validators changes. We'll get these back in once the changes to the output can be resolved.
Restores broken tests on FreeBSD, Linux, MacOSX.
Changes reverted: r212500, r212317, r212290.
llvm-svn: 212543
show more ...
|
#
de963e9a |
| 03-Jul-2014 |
Zachary Turner <zturner@google.com> |
Adds the notion of an OptionValidator.
The purpose of the OptionValidator is to determine, based on some arbitrary set of conditions, whether or not a command option is valid for a given debugger st
Adds the notion of an OptionValidator.
The purpose of the OptionValidator is to determine, based on some arbitrary set of conditions, whether or not a command option is valid for a given debugger state. An example of this might be to selectively disable or enable certain command options that don't apply to a particular platform.
This patch contains no functional change, and does not actually make use of an OptionValidator for any purpose yet. A follow-up patch will begin to add the logic and users of OptionValidator.
Reviewed by: Greg Clayton, Jim Ingham
Differential Revision: http://reviews.llvm.org/D4369
llvm-svn: 212290
show more ...
|
#
705b1809 |
| 13-Jun-2014 |
Jason Molenda <jmolenda@apple.com> |
Initial merge of some of the iOS 8 / Mac OS X Yosemite specific lldb support. I'll be doing more testing & cleanup but I wanted to get the initial checkin done.
This adds a new SBExpressionOptions:
Initial merge of some of the iOS 8 / Mac OS X Yosemite specific lldb support. I'll be doing more testing & cleanup but I wanted to get the initial checkin done.
This adds a new SBExpressionOptions::SetLanguage API for selecting a language of an expression.
I added adds a new SBThread::GetInfoItemByPathString for retriving information about a thread from that thread's StructuredData.
I added a new StructuredData class for representing key-value/array/dictionary information (e.g. JSON formatted data). Helper functions to read JSON and create a StructuredData object, and to print a StructuredData object in JSON format are included.
A few Cocoa / Cocoa Touch data formatters were updated by Enrico to track changes in iOS 8 / Yosemite.
Before we query a thread's extended information, the system runtime may provide hints to the remote debug stub that it will use to retrieve values out of runtime structures. I added a new SystemRuntime method AddThreadExtendedInfoPacketHints which allows the SystemRuntime to add key-value type data to the initial request that we send to the remote stub.
The thread-format formatter string can now retrieve values out of a thread's extended info structured data. The default thread-format string picks up two of these - thread.info.activity.name and thread.info.trace_messages.
I added a new "jThreadExtendedInfo" packet in debugserver; I will add documentation to the lldb-gdb-remote.txt doc soon. It accepts JSON formatted arguments (most importantly, "thread":threadnum) and it returns a variety of information regarding the thread to lldb in JSON format. This JSON return is scanned into a StructuredData object that is associated with the thread; UI layers can query the thread's StructuredData to see if key-values are present, and if so, show them to the user. These key-values are likely to be specific to different targets with some commonality among many targets. For instance, many targets will be able to advertise the pthread_t value for a thread.
I added an initial rough cut of "thread info" command which will print the information about a thread from the jThreadExtendedInfo result. I need to do more work to make this format reasonably.
Han Ming added calls into the pmenergy and pmsample libraries if debugserver is run on Mac OS X Yosemite to get information about the inferior's power use.
I added support to debugserver for gathering the Genealogy information about threads, if it exists, and returning it in the jThreadExtendedInfo JSON result.
llvm-svn: 210874
show more ...
|
Revision tags: llvmorg-3.4.2, llvmorg-3.4.2-rc1 |
|
#
8646d3c1 |
| 05-May-2014 |
Jim Ingham <jingham@apple.com> |
Rename eExecution*** to eExpression*** to be consistent with the result type.
llvm-svn: 207945
|
#
1624a2d3 |
| 05-May-2014 |
Jim Ingham <jingham@apple.com> |
Make the Expression Execution result enum available to the SB API layer. Add a callback that will allow an expression to be cancelled between the expression evaluation stages (for the ClangUserExpres
Make the Expression Execution result enum available to the SB API layer. Add a callback that will allow an expression to be cancelled between the expression evaluation stages (for the ClangUserExpressions.)
<rdar://problem/16790467>, <rdar://problem/16573440>
llvm-svn: 207944
show more ...
|
Revision tags: llvmorg-3.4.1, llvmorg-3.4.1-rc2, llvmorg-3.4.1-rc1 |
|
#
6c9ed91c |
| 03-Apr-2014 |
Jim Ingham <jingham@apple.com> |
Make the fail messages
llvm-svn: 205497
|
#
4b4b2478 |
| 13-Mar-2014 |
Jim Ingham <jingham@apple.com> |
This commit reworks how the thread plan's ShouldStopHere mechanism works, so that it is useful not only for customizing "step-in" behavior (e.g. step-in doesn't step into code with no debug info), bu
This commit reworks how the thread plan's ShouldStopHere mechanism works, so that it is useful not only for customizing "step-in" behavior (e.g. step-in doesn't step into code with no debug info), but also the behavior of step-in/step-out and step-over when they step out of the frame they started in.
I also added as a proof of concept of this reworking a mode for stepping where stepping out of a frame into a frame with no debug information will continue stepping out till it arrives at a frame that does have debug information. This is useful when you are debugging callback based code where the callbacks are separated from the code that initiated them by some library glue you don't care about, among other things.
llvm-svn: 203747
show more ...
|
Revision tags: llvmorg-3.4.0, llvmorg-3.4.0-rc3, llvmorg-3.4.0-rc2, llvmorg-3.4.0-rc1 |
|
#
008c45f1 |
| 12-Nov-2013 |
Jason Molenda <jmolenda@apple.com> |
Change SBThread::GetExtendedBacktrace to SBThread::GetExtendedBacktraceThread to make it more clear what is being returned.
llvm-svn: 194531
|
#
750ea692 |
| 12-Nov-2013 |
Jason Molenda <jmolenda@apple.com> |
Add initial --extended / -e support to thread backtrace.
llvm-svn: 194455
|
#
5c19eac1 |
| 06-Nov-2013 |
Sean Callanan <scallanan@apple.com> |
Added Iterable, a class that vends standard C++ iterators for LLDB's container data structures. Iterable abstracts over the backing data structure, ignoring keys for maps for example. It also provid
Added Iterable, a class that vends standard C++ iterators for LLDB's container data structures. Iterable abstracts over the backing data structure, ignoring keys for maps for example. It also provides locking as a service so that the code
for (ThreadSP thread_sp : process->Threads()) { // ... use thread_sp }
takes the appropriate locks once, without having to do anything else.
The salient advantages of this system are:
- Much simpler and idiomatic loop code - Lock once instead of each time an element is fetched - Less boilerplate to produce the iterators
The intent is that Iterable will replace Get...AtIndex in most places, and that ForEach(), which solves the same problem in a less-idiomatic way, be phased out in favor of this approach.
I've added Iterables to ThreadList, TypeList, and Process (which is really just forwarding to ThreadList).
llvm-svn: 194159
show more ...
|
#
b57e4a1b |
| 04-Nov-2013 |
Jason Molenda <jmolenda@apple.com> |
Roll back the changes I made in r193907 which created a new Frame pure virtual base class and made StackFrame a subclass of that. As I started to build on top of that arrangement today, I found that
Roll back the changes I made in r193907 which created a new Frame pure virtual base class and made StackFrame a subclass of that. As I started to build on top of that arrangement today, I found that it wasn't working out like I intended. Instead I'll try sticking with the single StackFrame class -- there's too much code duplication to make a more complicated class hierarchy sensible I think.
llvm-svn: 193983
show more ...
|
#
f23bf743 |
| 02-Nov-2013 |
Jason Molenda <jmolenda@apple.com> |
Add a new base class, Frame. It is a pure virtual function which defines a protocol that all subclasses will implement. StackFrame is currently the only subclass and the methods that Frame vends ar
Add a new base class, Frame. It is a pure virtual function which defines a protocol that all subclasses will implement. StackFrame is currently the only subclass and the methods that Frame vends are nearly identical to StackFrame's old methods.
Update all callers to use Frame*/Frame& instead of pointers to StackFrames.
This is almost entirely a mechanical change that touches a lot of the code base so I'm committing it alone. No new functionality is added with this patch, no new subclasses of Frame exist yet.
I'll probably need to tweak some of the separation, possibly moving some of StackFrame's methods up in to Frame, but this is a good starting point.
<rdar://problem/15314068>
llvm-svn: 193907
show more ...
|
#
9063bf46 |
| 12-Sep-2013 |
Andrew Kaylor <andrew.kaylor@intel.com> |
Fixing a problem where CommandObjectThreadContinue held the thread list lock while waiting for the process to stop after a continue.
llvm-svn: 190626
|
#
f86248d9 |
| 12-Sep-2013 |
Richard Mitton <richard@codersnotes.com> |
Added a 'jump' command, similar to GDBs.
This allows the PC to be directly changed to a different line. It's similar to the example python script in examples/python/jump.py, except implemented as a
Added a 'jump' command, similar to GDBs.
This allows the PC to be directly changed to a different line. It's similar to the example python script in examples/python/jump.py, except implemented as a builtin.
Also this version will track the current function correctly even if the target line resolves to multiple addresses. (e.g. debugging a templated function)
llvm-svn: 190572
show more ...
|
#
e2607b50 |
| 05-Sep-2013 |
Virgile Bello <virgile.bello@gmail.com> |
Add OptionParser.h
llvm-svn: 190063
|
#
4d56e9c1 |
| 18-Jul-2013 |
Jim Ingham <jingham@apple.com> |
This commit does two things. One, it converts the return value of the QueueThreadPlanXXX plan providers from a "ThreadPlan *" to a "lldb::ThreadPlanSP". That was needed to fix a bug where the Thre
This commit does two things. One, it converts the return value of the QueueThreadPlanXXX plan providers from a "ThreadPlan *" to a "lldb::ThreadPlanSP". That was needed to fix a bug where the ThreadPlanStepInRange wasn't checking with its sub-plans to make sure they succeed before trying to proceed further. If the sub-plan failed and as a result didn't make any progress, you could end up retrying the same failing algorithm in an infinite loop.
<rdar://problem/14043602>
llvm-svn: 186618
show more ...
|
Revision tags: llvmorg-3.3.1-rc1, llvmorg-3.3.0, llvmorg-3.3.0-rc3, llvmorg-3.3.0-rc2, llvmorg-3.3.0-rc1 |
|
#
93208b86 |
| 31-Jan-2013 |
Jim Ingham <jingham@apple.com> |
Add "thread return -x" to unwind the innermost user called expression (if you happen to have stopped in it due to a crash.) Make the message when you hit an crash while evaluating an expression a lit
Add "thread return -x" to unwind the innermost user called expression (if you happen to have stopped in it due to a crash.) Make the message when you hit an crash while evaluating an expression a little clearer, and mention "thread return -x".
rdar://problem/13110464
llvm-svn: 174095
show more ...
|
#
c7bece56 |
| 25-Jan-2013 |
Greg Clayton <gclayton@apple.com> |
<rdar://problem/13069948>
Major fixed to allow reading files that are over 4GB. The main problems were that the DataExtractor was using 32 bit offsets as a data cursor, and since we mmap all of our
<rdar://problem/13069948>
Major fixed to allow reading files that are over 4GB. The main problems were that the DataExtractor was using 32 bit offsets as a data cursor, and since we mmap all of our object files we could run into cases where if we had a very large core file that was over 4GB, we were running into the 4GB boundary.
So I defined a new "lldb::offset_t" which should be used for all file offsets.
After making this change, I enabled warnings for data loss and for enexpected implicit conversions temporarily and found a ton of things that I fixed.
Any functions that take an index internally, should use "size_t" for any indexes and also should return "size_t" for any sizes of collections.
llvm-svn: 173463
show more ...
|
#
f9fc609f |
| 09-Jan-2013 |
Greg Clayton <gclayton@apple.com> |
Expanded the flags that can be set for a command object in lldb_private::CommandObject. This list of available flags are:
enum { //---------------------------------------------------------------
Expanded the flags that can be set for a command object in lldb_private::CommandObject. This list of available flags are:
enum { //---------------------------------------------------------------------- // eFlagRequiresTarget // // Ensures a valid target is contained in m_exe_ctx prior to executing // the command. If a target doesn't exist or is invalid, the command // will fail and CommandObject::GetInvalidTargetDescription() will be // returned as the error. CommandObject subclasses can override the // virtual function for GetInvalidTargetDescription() to provide custom // strings when needed. //---------------------------------------------------------------------- eFlagRequiresTarget = (1u << 0), //---------------------------------------------------------------------- // eFlagRequiresProcess // // Ensures a valid process is contained in m_exe_ctx prior to executing // the command. If a process doesn't exist or is invalid, the command // will fail and CommandObject::GetInvalidProcessDescription() will be // returned as the error. CommandObject subclasses can override the // virtual function for GetInvalidProcessDescription() to provide custom // strings when needed. //---------------------------------------------------------------------- eFlagRequiresProcess = (1u << 1), //---------------------------------------------------------------------- // eFlagRequiresThread // // Ensures a valid thread is contained in m_exe_ctx prior to executing // the command. If a thread doesn't exist or is invalid, the command // will fail and CommandObject::GetInvalidThreadDescription() will be // returned as the error. CommandObject subclasses can override the // virtual function for GetInvalidThreadDescription() to provide custom // strings when needed. //---------------------------------------------------------------------- eFlagRequiresThread = (1u << 2), //---------------------------------------------------------------------- // eFlagRequiresFrame // // Ensures a valid frame is contained in m_exe_ctx prior to executing // the command. If a frame doesn't exist or is invalid, the command // will fail and CommandObject::GetInvalidFrameDescription() will be // returned as the error. CommandObject subclasses can override the // virtual function for GetInvalidFrameDescription() to provide custom // strings when needed. //---------------------------------------------------------------------- eFlagRequiresFrame = (1u << 3), //---------------------------------------------------------------------- // eFlagRequiresRegContext // // Ensures a valid register context (from the selected frame if there // is a frame in m_exe_ctx, or from the selected thread from m_exe_ctx) // is availble from m_exe_ctx prior to executing the command. If a // target doesn't exist or is invalid, the command will fail and // CommandObject::GetInvalidRegContextDescription() will be returned as // the error. CommandObject subclasses can override the virtual function // for GetInvalidRegContextDescription() to provide custom strings when // needed. //---------------------------------------------------------------------- eFlagRequiresRegContext = (1u << 4), //---------------------------------------------------------------------- // eFlagTryTargetAPILock // // Attempts to acquire the target lock if a target is selected in the // command interpreter. If the command object fails to acquire the API // lock, the command will fail with an appropriate error message. //---------------------------------------------------------------------- eFlagTryTargetAPILock = (1u << 5), //---------------------------------------------------------------------- // eFlagProcessMustBeLaunched // // Verifies that there is a launched process in m_exe_ctx, if there // isn't, the command will fail with an appropriate error message. //---------------------------------------------------------------------- eFlagProcessMustBeLaunched = (1u << 6), //---------------------------------------------------------------------- // eFlagProcessMustBePaused // // Verifies that there is a paused process in m_exe_ctx, if there // isn't, the command will fail with an appropriate error message. //---------------------------------------------------------------------- eFlagProcessMustBePaused = (1u << 7) };
Now each command object contains a "ExecutionContext m_exe_ctx;" member variable that gets initialized prior to running the command. The validity of the target objects in m_exe_ctx are checked to ensure that any target/process/thread/frame/reg context that are required are valid prior to executing the command. Each command object also contains a Mutex::Locker m_api_locker which gets used if eFlagTryTargetAPILock is set. This centralizes a lot of checking code that was previously and inconsistently implemented across many commands.
llvm-svn: 171990
show more ...
|
Revision tags: llvmorg-3.2.0 |
|
#
c627682e |
| 12-Dec-2012 |
Jim Ingham <jingham@apple.com> |
Fixed a few bugs in the "step in" thread plan logic. Added a "step-in-target" flag to "thread step-in" so if you have something like:
Process 28464 stopped * thread #1: tid = 0x1c03, function: main
Fixed a few bugs in the "step in" thread plan logic. Added a "step-in-target" flag to "thread step-in" so if you have something like:
Process 28464 stopped * thread #1: tid = 0x1c03, function: main , stop reason = breakpoint 1.1 frame #0: 0x0000000100000e08 a.out`main at main.c:62 61 -> 62 int A6 = complex (a(4), b(5), c(6)); // Stop here to step targetting b and hitting breakpoint. 63
and you want to get into "complex" skipping a, b and c, you can do:
(lldb) step -t complex Process 28464 stopped * thread #1: tid = 0x1c03, function: complex , stop reason = step in frame #0: 0x0000000100000d0d a.out`complex at main.c:44 41 42 int complex (int first, int second, int third) 43 { -> 44 return first + second + third; // Step in targetting complex should stop here 45 } 46 47 int main (int argc, char const *argv[])
llvm-svn: 170008
show more ...
|
#
c3faa195 |
| 11-Dec-2012 |
Jim Ingham <jingham@apple.com> |
Broadcast an event when the selected thread is changed.
<rdar://problem/10976636>
llvm-svn: 169810
|
Revision tags: llvmorg-3.2.0-rc3 |
|
#
93a64300 |
| 05-Dec-2012 |
Daniel Malea <daniel.malea@intel.com> |
Fix Linux build warnings due to redefinition of macros: - add new header lldb-python.h to be included before other system headers - short term fix (eventually python dependencies must be cleaned up)
Fix Linux build warnings due to redefinition of macros: - add new header lldb-python.h to be included before other system headers - short term fix (eventually python dependencies must be cleaned up)
Patch by Matt Kopec!
llvm-svn: 169341
show more ...
|