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]

Regression loading a tracefile in 7_3


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'.




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