Re: Doubt using "set" command with registers
Pedro Alves <[email protected]>
| Newsgroups | gmane.comp.gdb.devel |
|---|---|
| Message-ID | <[email protected]> |
On 10/31/2014 11:21 AM, [email protected] wrote: > Citando Pedro Alves <[email protected]>: >> I'd guess that it's kgdb itself that is blocking those writes. >> >> Try "set debug remote 1" before the "set $foo = " command. > Thanks for your answer. I turned "set debug remote 1" on again, and > strangely, the output tells me that "set-register" is not supported, > but only when I'm able to change the register value (see the output > below). First, I've tried with a register which I can successfully > change the value, and then with another one where I wasn't able to do > it in the past. Do you know why this behaviour occurs? Meanwhile, I'll > ask the same in the KGDB mailing list. Like I've mentioned, output > below: > > (gdb) info reg $es > es 0x7b 123 > (gdb) set $es = 0x7c > Sending packet: $Pd=7c000000#ab...Ack > Packet received: > Packet P (set-register) is NOT supported If the P packet (write one register) is not supported, then ... > Sending packet: > $G14000000ccb59cc00000000067000000089fcbf10c9fcbf1ac309dc00000000079154ac09600000060000000680000007b009dc07c000000ffff0000ffff0000#61...Ack > Packet received: OK ... GDB tries the G packet (writes the whole set of registers in one block), and doesn't try P again. That's normal. > Sending packet: $g#67...Ack > Packet received: > 14000000ccb59cc00000000067000000089fcbf10c9fcbf1ac309dc00000000079154ac09600000060000000680000007b009dc07c000000ffff0000ffff0000 > (gdb) info reg $es > es 0x7c 124 > (gdb) info reg $ss > ss 0x68 104 > (gdb) set $ss = 0x69 > Sending packet: > $G14000000ccb59cc00000000067000000089fcbf10c9fcbf1ac309dc00000000079154ac09600000060000000690000007b009dc07c000000ffff0000ffff0000#62...Ack > Packet received: OK Here GDB went straight to the G packet, because it now knows P is not supported. The target accepted the write ... > Sending packet: $g#67...Ack > Packet received: > 14000000ccb59cc00000000067000000089fcbf10c9fcbf1ac309dc00000000079154ac09600000060000000680000007b009dc07c000000ffff0000ffff0000 > (gdb) info reg $ss > ss 0x68 104 ... but didn't make it really effective. Note the "68" in the g packet (read registers) reply -- seems like kgdb is simply ignoring the change to $ss. Thanks, Pedro Alves