Re: Reverse debugging for arm baremetal targets?
Hui Zhu <[email protected]>
| Newsgroups | gmane.comp.gdb.devel |
|---|---|
| Message-ID | <CANFwon3Uaqv+Tah6wU2MupoZ+LNnb=pv2MzNVSBmEm+2FfW84Q@mail.gmail.com> |
On Mon, Jul 22, 2013 at 2:10 PM, Terry Guo <[email protected]> wrote: > On Mon, Jul 22, 2013 at 10:07 AM, Hui Zhu <[email protected]> wrote: >> On Mon, Jul 22, 2013 at 9:37 AM, Terry Guo <[email protected]> wrote: >>> Hi there, >>> >>> Is this feature enabled for arm baremetal targets? If not, is it >>> possible to do so and what kind of problems we need to solve to >>> achieve this? Thanks in advance for your help. >>> >>> Best Regards, >>> Terry >> >> If just for reverse debug, I think it is not depend on the arch. So I >> think it is OK for ARM. >> >> And if I remember is right, simics support it. >> >> Thanks, >> Hui > > Thanks for your reply. I did some tests and it seems to me that > reverse debugging doesn't work for baremetal targets. My test includes > a ARM Cortex-M3 board running a baremetal program, a gdb server and a > baremetal gdb. The gdb version is: > > GNU gdb (GDB) 7.6 > > After I connect to M3 board and run command "record", I got: This error is about process record but not reverse debug. > > Breakpoint 1, main () at main.cpp:24 > 24 xyz = 0; > (gdb) record > Process record: the current architecture doesn't support record function. This is the reason why you cannot use reverse debug commands. You got this error is because: /* Reversible debugging, process record. */ set_gdbarch_process_record (gdbarch, arm_process_record); This line is called in arm_linux_init_abi but you are not a linux target. I found all the "set_gdbarch_process_record" is called in xxx_linux_init function make it depend on Linux. I forget why I do it. :P I think 2 reasons let me do it: 1. syscall record just support linux. 2. make it can pass review. :P But most of prec function is just to record the behavior of instruction. So maybe we can move it to arch init code. Thanks, Hui > (gdb) show ar > architecture args arm > (gdb) show architecture > The target architecture is set automatically (currently arm) > (gdb) n > 26 foo (); > (gdb) s > foo () at main.cpp:16 > 16 xyz = 1; > (gdb) n > 17 return bar (); > (gdb) s > bar () at main.cpp:10 > 10 xyz = 2; > (gdb) reverse-next > Target remote does not support this command. > > Am I doing something wrong? Please advise. > > BR, > Terry