On 10/31/14 11:06, joaoandrefe...@sapo.pt wrote:
> Hello all,
>
> Lately, I've been experimenting with KGDB to do some kernel debugging.
> While doing this, a doubt arised while using the "set" command, trying
> to change the value of some registers. I've been able to successfully
> change the value of all the registers provided by the "info registers"
> command (i. e., in my case $eax, $ecx, $edx, $ebx, $esp, $ebp, $esi,
> $edi, $eip, $eflags, $cs, $ss, $ds, $es, $fs and $gs) *except* for
> $esp, $ss, $fs and $gs. Why is it so?
If you were to be successful in changing these once you continued from 
KGDB you would likely be immeadiatly back in KGDB to handle a system 
fault.  If you got them exactly right, you just might be in another 
thread and might even execute a few instructions before the system 
discovered (the hard way) that it was executing code from a thread that 
was not the one the system tables indicate is running.

Some of the registers you can change need to be handled VERY carefully 
(eip or esp for example) or you could easily confuse the system as well.

-- 
George
> I've been making these tests
> after hitting a hardware breakpoint, then I set the values with e. g.
> "set $es = 0xf1c2007c", and verifiy the assignemt with "info reg $es".
> As I've pointed out, it works with the majority of the registers,
> except for that four (in this particular case, the first command
> doesn't output any error, but the second command shows me that the
> registers remain with the initial value). By the way, I've started GDB
> with the -write option (checked it inside GDb with the "show write"
> command). My GDB version is 7.2. I have a practical example below the
> end of this message, with "set debug remote 1" option enabled. Still
> regarding this exxample, from what I've been told in the GDB mailing
> list, it seems KGDB is ignoring the value change on $ss.
>
> Anyone here knows why? If someone knows something about this situation
> and can share it with me, it would be great.
>
> Best regards,
> João
>
> Example:
>
> (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
> Sending packet:
> $G14000000ccb59cc00000000067000000089fcbf10c9fcbf1ac309dc00000000079154ac09600000060000000680000007b009dc07c000000ffff0000ffff0000#61...Ack
> Packet received: OK
> Sending packet: $g#67...Ack
> Packet received:
> 14000000ccb59cc00000000067000000089fcbf10c9fcbf1ac309dc00000000079154ac09600000060000000680000007b009dc07c000000ffff0000ffff0000
> (gdb) info reg $es
> es             0x7c        124
> (gdb) info reg $ssPedro
> ss             0x68        104
> (gdb) set $ss = 0x69
> Sending packet:
> $G14000000ccb59cc00000000067000000089fcbf10c9fcbf1ac309dc00000000079154ac09600000060000000690000007b009dc07c000000ffff0000ffff0000#62...Ack
> Packet received: OK
> Sending packet: $g#67...Ack
> Packet received:
> 14000000ccb59cc00000000067000000089fcbf10c9fcbf1ac309dc00000000079154ac09600000060000000680000007b009dc07c000000ffff0000ffff0000
> (gdb) info reg $ss
> ss             0x68        104
>
> Best regards,
> João
>
> ------------------------------------------------------------------------------
> _______________________________________________
> Kgdb-bugreport mailing list
> Kgdb-bugreport@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/kgdb-bugreport
>

-- 
George Anzinger   geo...@wildturkeyranch.net


------------------------------------------------------------------------------
_______________________________________________
Kgdb-bugreport mailing list
Kgdb-bugreport@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kgdb-bugreport

Reply via email to