History log of /external/lldb/include/lldb/Breakpoint/BreakpointLocation.h
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
d93d9131514d1c6f849a06180ec2f01d7792a661 06-Jun-2013 Sean Callanan <scallanan@apple.com> Fixed a problem where evaluating a breakpoint
condition in two different processes (with the
same target) could cause crashes. Now the breakpoint
condition is always evaluated (and possibly parsed)
by one thread at a time.

<rdar://problem/14083737>


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@183440 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Breakpoint/BreakpointLocation.h
28195f9e55173cd06c3c5f9e69cefeb1d03cc129 19-Apr-2013 Sean Callanan <scallanan@apple.com> Optimized the way breakpoint conditions are evaluated.
Previously, the options for a breakopint or its
locations stored only the text of the breakpoint
condition (ironically, they used ClangUserExpression
as a glorified std::string) and, each time the condition
had to be evaluated in the StopInfo code, the expression
parser would be invoked via a static method to parse and
then execute the expression.

I made several changes here:

- Each breakpoint location now has its own
ClangUserExpressionSP containing a version of
the breakpoint expression compiled for that exact
location.

- Whenever the breakpoint is hit, the breakpoint
condition expression is simply re-run to determine
whether to stop.

- If the process changes (e.g., it's re-run) or
the source code of the expression changes (we use
a hash so as to avoid doing string comparisons)
the ClangUserExpressionSP is re-generated.

This should improve performance of breakpoint
conditions significantly, and takes advantage of
the recent expression re-use work.


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@179838 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Breakpoint/BreakpointLocation.h
102b2c2681c9a830afe25bfea35557421905e42c 19-Apr-2013 Greg Clayton <gclayton@apple.com> After discussing with Chris Lattner, we require C++11, so lets get rid of the macros and just use C++11.



git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@179805 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Breakpoint/BreakpointLocation.h
81a96aa6242f7b559770f5dc62316253cb8cb0d4 18-Apr-2013 Greg Clayton <gclayton@apple.com> Since we use C++11, we should switch over to using std::unique_ptr when C++11 is being used. To do this, we follow what we have done for shared pointers and we define a STD_UNIQUE_PTR macro that can be used and it will "do the right thing". Due to some API differences in std::unique_ptr and due to the fact that we need to be able to compile without C++11, we can't use move semantics so some code needed to change so that it can compile with either C++.

Anyone wanting to use a unique_ptr or auto_ptr should now use the "STD_UNIQUE_PTR(TYPE)" macro.



git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@179779 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Breakpoint/BreakpointLocation.h
fdbd10abe4f1f0e97647355823a8e2cd5f50856b 27-Jun-2012 Jim Ingham <jingham@apple.com> Fix ignore counts on breakpoints so they actually work.


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@159233 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Breakpoint/BreakpointLocation.h
b5d55cf7a00d0f9e31a1664d372f8e570d562777 02-May-2012 Jim Ingham <jingham@apple.com> Cleanup - removing the ThreadPlanTestCondition and its helper functions. It is not needed,
since we now run the condition in the StopInfoBreakpoint's PerformAction, and don't need
to refer it to another "continue". Actually, we haven't needed to do this for a year or
so, I just hadn't gotten around to deleting the dead wood.


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@155967 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Breakpoint/BreakpointLocation.h
598df88bd6fc33c6fb330bc859bdc277795501f3 14-Mar-2012 Greg Clayton <gclayton@apple.com> <rdar://problem/10434005>

Prepare LLDB to be built with C++11 by hiding all accesses to std::tr1 behind
macros that allows us to easily compile for either C++.




git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@152698 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Breakpoint/BreakpointLocation.h
28e23861bedbeb5e46be7d2af4c33bf5132422c6 08-Feb-2012 Jim Ingham <jingham@apple.com> Send Breakpoint Changed events for all the relevant changes to breakpoints.
Also, provide and use accessors for the thread options on breakpoints so we
can control sending the appropriate events.


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@150057 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Breakpoint/BreakpointLocation.h
ca4fe802f0f8439a070e2adfb38ae2487fbde135 01-Feb-2012 Johnny Chen <johnny.chen@apple.com> Add const-ness to BreakpointLocation::IsEnabled().


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@149523 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Breakpoint/BreakpointLocation.h
fd60a606f3283309a7d752e0cd3a559df7acee14 30-Jan-2012 Johnny Chen <johnny.chen@apple.com> Reverted 149277 changeset. It was coded that way for a reason.


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@149292 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Breakpoint/BreakpointLocation.h
fb0026b41b6f3feea41b96e26a15ddef519c1f46 30-Jan-2012 Johnny Chen <johnny.chen@apple.com> Make BreakpointLocation::IsEnabled() consistent with the BreakpointLocation::SetEnabled() implementation.


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@149277 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Breakpoint/BreakpointLocation.h
13d24fb1817faa7ccc4cfd799113ba1a2b8968eb 29-Jan-2012 Greg Clayton <gclayton@apple.com> Switching back to using std::tr1::shared_ptr. We originally switched away
due to RTTI worries since llvm and clang don't use RTTI, but I was able to
switch back with no issues as far as I can tell. Once the RTTI issue wasn't
an issue, we were looking for a way to properly track weak pointers to objects
to solve some of the threading issues we have been running into which naturally
led us back to std::tr1::weak_ptr. We also wanted the ability to make a shared
pointer from just a pointer, which is also easily solved using the
std::tr1::enable_shared_from_this class.

The main reason for this move back is so we can start properly having weak
references to objects. Currently a lldb_private::Thread class has a refrence
to its parent lldb_private::Process. This doesn't work well when we now hand
out a SBThread object that contains a shared pointer to a lldb_private::Thread
as this SBThread can be held onto by external clients and if they end up
using one of these objects we can easily crash.

So the next task is to start adopting std::tr1::weak_ptr where ever it makes
sense which we can do with lldb_private::Debugger, lldb_private::Target,
lldb_private::Process, lldb_private::Thread, lldb_private::StackFrame, and
many more objects now that they are no longer using intrusive ref counted
pointer objects (you can't do std::tr1::weak_ptr functionality with intrusive
pointers).



git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@149207 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Breakpoint/BreakpointLocation.h
987c7ebe1daa425ba7abfa9643800e3237146fc0 17-Sep-2011 Greg Clayton <gclayton@apple.com> Adopt the intrusive pointers in:

lldb_private::Breakpoint
lldb_private::BreakpointLocations
lldb_private::BreakpointSite
lldb_private::Debugger
lldb_private::StackFrame
lldb_private::Thread
lldb_private::Target



git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@139985 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Breakpoint/BreakpointLocation.h
ac35442b2b1a35ea3100c870214977e3bddb76f6 15-Jun-2011 Jim Ingham <jingham@apple.com> Made GetConditionText const everywhere. Made it return NULL when there's no condition
like the doc's say it should. Make sure we have a condition before we set up a test whether
we have one, so we only present a "could not parse condition" error if we actually have a condition.


git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@133088 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Breakpoint/BreakpointLocation.h
19a1ab8a1e0c9c66adaa648b5cf5909dac2d667e 05-Feb-2011 Greg Clayton <gclayton@apple.com> Fixed the BreakpointLocationList to be able to do O(1) lookups on breakpoint
locations by ID. It used to be, worst case, O(N).



git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@124914 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Breakpoint/BreakpointLocation.h
640dc6b983964615bcb149d7d37ee007a13fb02c 18-Nov-2010 Greg Clayton <gclayton@apple.com> Added the ability to get more information on the SBThread's stop reason
by being able to get the data count and data. Each thread stop reason
has one or more data words that can help describe the stop. To do this
I added:

size_t
SBThread::GetStopReasonDataCount();

uint64_t
SBThread::GetStopReasonDataAtIndex(uint32_t idx);




git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@119720 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Breakpoint/BreakpointLocation.h
d168690e51f9020b926d3d0d57dc9a2cfb2095a8 15-Oct-2010 Jim Ingham <jingham@apple.com> Added support for breakpoint conditions. I also had to separate the "run the expression" part of ClangFunction::Execute from the "Gather the expression result" so that in the case of the Breakpoint condition I can move the condition evaluation into the normal thread plan processing.

Also added support for remembering the "last set breakpoint" so that "break modify" will act on the last set breakpoint.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@116542 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Breakpoint/BreakpointLocation.h
643ee7301b5d4b05c321d906bc0d7ff11f571295 04-Aug-2010 Greg Clayton <gclayton@apple.com> Abtracted the old "lldb_private::Thread::StopInfo" into an abtract class.
This will allow debugger plug-ins to make any instance of "lldb_private::StopInfo"
that can completely describe any stop reason. It also provides a framework for
doing intelligent things with the stop info at important times in the lifetime
of the inferior.

Examples include the signal stop info in StopInfoUnixSignal. It will check with
the process to see that the current action is for the signal. These actions
include wether to stop for the signal, wether the notify that the signal was
hit, and wether to pass the signal along to the inferior process. The
StopInfoUnixSignal class overrides the "ShouldStop()" method of StopInfo and
this allows the stop info to determine if it should stop at the signal or
continue the process.


StopInfo subclasses must override the following functions:

virtual lldb::StopReason
GetStopReason () const = 0;

virtual const char *
GetDescription () = 0;


StopInfo subclasses can override the following functions:


// If the subclass returns "false", the inferior will resume. The default
// version of this function returns "true" which means the default stop
// info will stop the process. The breakpoint subclass will check if
// the breakpoint wants us to stop by calling any installed callback on
// the breakpoint, and also checking if the breakpoint is for the current
// thread. Signals will check if they should stop based off of the
// UnixSignal settings in the process.
virtual bool
ShouldStop (Event *event_ptr);

// Sublasses can state if they want to notify the debugger when "ShouldStop"
// returns false. This would be handy for breakpoints where you want to
// log information and continue and is also used by the signal stop info
// to notify that a signal was received (after it checks with the process
// signal settings).
virtual bool
ShouldNotify (Event *event_ptr)
{
return false;
}

// Allow subclasses to do something intelligent right before we resume.
// The signal class will figure out if the signal should be propagated
// to the inferior process and pass that along to the debugger plug-ins.
virtual void
WillResume (lldb::StateType resume_state)
{
// By default, don't do anything
}


The support the Mach exceptions was moved into the lldb/source/Plugins/Process/Utility
folder and now doesn't polute the lldb_private::Thread class with platform
specific code.



git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@110184 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Breakpoint/BreakpointLocation.h
54e7afa84d945f9137f9372ecde432f9e1a702fc 09-Jul-2010 Greg Clayton <gclayton@apple.com> Merged Eli Friedman's linux build changes where he added Makefile files that
enabled LLVM make style building and made this compile LLDB on Mac OS X. We
can now iterate on this to make the build work on both linux and macosx.



git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@108009 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Breakpoint/BreakpointLocation.h
9c6898b5686984baa09d0c694169cc935fc99562 22-Jun-2010 Jim Ingham <jingham@apple.com> Make an explicit GetThreadSpecNoCreate accessor so you don't have to get the const-ness right to ensure you are not making a copy of the owning breakpoint's ThreadSpec in a breakpoint location. Also change the name from NoCopy to NoCreate since that's clearer.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@106578 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Breakpoint/BreakpointLocation.h
3c7b5b9f83cae58ca366db2bba37dc09485f7dcc 16-Jun-2010 Jim Ingham <jingham@apple.com> Add a "thread specification" class that specifies thread specific breakpoints by name, index, queue or TID.
Push this through all the breakpoint management code. Allow this to be set when the breakpoint is created.
Fix the Process classes so that a breakpoint hit that is not for a particular thread is not reported as a
breakpoint hit event for that thread.
Added a "breakpoint configure" command to allow you to reset any of the thread
specific options (or the ignore count.)


git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@106078 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Breakpoint/BreakpointLocation.h
273a8e58a03ebf44fba04bd006b832882c80a9a0 14-Jun-2010 Greg Clayton <gclayton@apple.com> patch from: Jean-Daniel Dupas

BreakpointLocation::GetLoadAddress() does not match the 'StoppointLocation::GetLoadAddress() const' virtual function prototype, and so, does not override the superclass function.



git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@105927 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Breakpoint/BreakpointLocation.h
24943d2ee8bfaa7cf5893e4709143924157a5c1e 08-Jun-2010 Chris Lattner <sabre@nondot.org> Initial checkin of lldb code from internal Apple repo.


git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@105619 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Breakpoint/BreakpointLocation.h