This is the mail archive of the gdb@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Regression loading a tracefile in 7_3


Hi Marc,

I'll take a look.

On Friday 20 May 2011 03:03:20, Marc Khouzam wrote:
> Hi,
> 
> I believe I'm seeing a regression loading a tracefile in GDB 7.3
> I create a simple tracefile using GDB/gdbserver 7.3 but when I try to load
> that tracefile, I get an error about "PC register is not available", which
> causes my Eclipse session to abort.  This is not happening in 7.2 or 7.2.1.
> 
> > gdb.7.3 a.out
> GNU gdb (GDB) 7.2.90.20110519-cvs
> (gdb) interpreter-exec mi "-target-select tfile trace.7.3"
> ~"Created tracepoint 1 for target's tracepoint 1 at 0x804851f.\n"
> ^error,msg="PC register is not available"
> 
> Things might be ok after that, meaning that tstatus seems ok, and
> tfind works ok.  But the ^error reply is a problem.
> 
> It's caused by a recent added check in regcache.c:regcache_read_pc ()
> for the return value of regcache_cooked_read_unsigned()
> 
>       if (regcache_cooked_read_unsigned (regcache,
> 					 gdbarch_pc_regnum (gdbarch),
> 					 &raw_val) == REG_UNAVAILABLE)
> 	throw_error (NOT_AVAILABLE_ERROR, _("PC register is not available"));
> 
> I don't know if I'm doing something wrong, but I wanted to report it right
> away to avoid having a regression in the 7.3 release.
> 
> Any help appreciated.
> 
> Thanks
> 
> Marc
> 
> Below is how I created the trace file:
> 
> > gdb.7.3 a.out
> GNU gdb (GDB) 7.2.90.20110519-cvs
> (gdb) target remote :9999
> Remote debugging using :9999
> Reading symbols from /lib/ld-linux.so.2...(no debugging symbols found)...done.
> Loaded symbols for /lib/ld-linux.so.2
> 0x00258850 in ?? () from /lib/ld-linux.so.2
> (gdb) l
> 1       #include <unistd.h>
> 2       #include <stdio.h>
> 3
> 4       int main() {
> 5           int max = 9;
> 6           for (int i=0;i<max;i++) {
> 7               printf("i is %d\n",i);
> 8               sleep(1);
> 9           }
> 10          return 0;
> (gdb) trace 7
> Tracepoint 1 at 0x804851f: file loopfirst.cc, line 7.
> (gdb) command
> Type commands for breakpoint(s) 1, one per line.
> End with a line saying just "end".
> >collect $locals
> >end
> (gdb) tstart
> (gdb) b 10
> Breakpoint 2 at 0x8048553: file loopfirst.cc, line 10.
> (gdb) c
> Continuing.
> 
> Breakpoint 2, main () at loopfirst.cc:10
> 10          return 0;
> (gdb) tstop
> (gdb) tstatus
> Trace stopped by a tstop command.
> Collected 9 trace frames.
> Trace buffer has 5239739 bytes of 5242880 bytes free (0% full).
> Trace will stop if GDB disconnects.
> Not looking at any trace frame.
> (gdb) tsave trace.7.3
> Trace data saved to file 'trace.7.3'.
> 
> 
> 
> 

-- 
Pedro Alves


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]