2010-04-15 Stan Shebs <stan@codesourcery.com>

* frame.c: Include tracepoint.h.
	(get_current_frame): Allow a trace frame to be an alternate source
	of stack frame data.
	* tracepoint.c (tfind_1): Don't try to get current stack frame if
	it won't succeed.
This commit is contained in:
Stan Shebs 2010-04-16 01:12:07 +00:00
parent 47edb3fead
commit 2ce6d6bf7c
3 changed files with 31 additions and 10 deletions

View file

@ -1856,11 +1856,19 @@ tfind_1 (enum trace_find_type type, int num,
int from_tty)
{
int target_frameno = -1, target_tracept = -1;
struct frame_id old_frame_id;
struct frame_id old_frame_id = null_frame_id;
char *reply;
struct breakpoint *tp;
old_frame_id = get_frame_id (get_current_frame ());
/* Only try to get the current stack frame if we have a chance of
succeeding. In particular, if we're trying to get a first trace
frame while all threads are running, it's not going to succeed,
so leave it with a default value and let the frame comparison
below (correctly) decide to print out the source location of the
trace frame. */
if (!(type == tfind_number && num == -1)
&& (has_stack_frames () || traceframe_number >= 0))
old_frame_id = get_frame_id (get_current_frame ());
target_frameno = target_trace_find (type, num, addr1, addr2,
&target_tracept);
@ -1873,7 +1881,7 @@ tfind_1 (enum trace_find_type type, int num,
}
else if (target_frameno == -1)
{
/* A request for a non-existant trace frame has failed.
/* A request for a non-existent trace frame has failed.
Our response will be different, depending on FROM_TTY:
If FROM_TTY is true, meaning that this command was
@ -1952,7 +1960,7 @@ tfind_1 (enum trace_find_type type, int num,
{
enum print_what print_what;
/* NOTE: in immitation of the step command, try to determine
/* NOTE: in imitation of the step command, try to determine
whether we have made a transition from one function to
another. If so, we'll print the "stack frame" (ie. the new
function and it's arguments) -- otherwise we'll just show the