I try MIPS tracepoint but when I want to use collect *(unsigned char *)($sp)@512 to collect the stack info, but I got: (gdb) actions Enter actions for tracepoint 1, one per line. End with a line saying just "end". >collect *(unsigned char *)($sp)@512 'sp' is a pseudo-register; GDB cannot yet trace pseudoregister contents. That is because in ax-gdb.c: reg = user_reg_map_name_to_regnum (exp->gdbarch, name, strlen (name)); if (reg == -1) internal_error (__FILE__, __LINE__, _("Register $%s not available"), name); if (reg >= gdbarch_num_regs (exp->gdbarch)) error (_("'%s' is a pseudo-register; " "GDB cannot yet trace pseudoregister contents."), name); In user_reg_map_name_to_regnum, it will call mips_register_name to get reg name: But in function mips_register_name: /* Map [gdbarch_num_regs .. 2*gdbarch_num_regs) onto the raw registers, but then don't make the raw register names visible. */ int rawnum = regno % gdbarch_num_regs (gdbarch); if (regno < gdbarch_num_regs (gdbarch)) return ""; So it make user_reg_map_name_to_regnum just can return the "reg" bigger than gdbarch_num_regs. Then it will get this error message. Do you have some way to handle this issue?
Now, GDB CVS trunk and 7.2 branch(will release in 7.2.1) support trace MIPS pseudo register. Trunk: http://sourceware.org/ml/gdb-cvs/2010-12/msg00136.html http://sourceware.org/ml/gdb-cvs/2010-12/msg00137.html http://sourceware.org/ml/gdb-cvs/2010-12/msg00149.html 7.2: http://sourceware.org/ml/gdb-cvs/2010-12/msg00155.html