Problems in the edge of functions
Daniel Jacobowitz
drow@mvista.com
Thu Feb 13 17:08:00 GMT 2003
On Thu, Feb 13, 2003 at 05:57:37PM +0000, a2782@dis.ulpgc.es wrote:
> Hi to all!
>
> I\'m using GDB to design a didactic graphic environment over it (as
> DDD). But I have found that, when I put a breakpoint in the first
> machine instruction of a function (push %ebp) and I ask the debugger
> for the information of the frames, GDB \"lies\". An example:
> If I type \"info locals\" when the program stops in the breakpoint, GDB
> returns: \"b = 10\" (it should return \"b = 14726457264\"). It\'s evident
> that GDB is looking in the position where it thinks that \'b\' should be
> (but in this position we find \'a\'). The reason why this occurs is that
> the stack has not been updated (the stack updates with the
> instructions \'mov %esp, %ebp\', and \'subl $8, %esp\', but they haven\'t
> been executed). However, if I type \'x /1wx 0x0bfff...\' and \'info
> registers\', I\'ll be able to discover the real state of the stack.
>
> There\'s a similar problem with the instruction \'leave\'.
>
> My question is: is this a bug? Or is there a way of solving it?
It's a bug, but there's no real plans to fix it right now; eventually,
better unwind information will probably fix it, and it's not a big
deal. The locals don't have a value yet, after all.
Sometimes this causes messed up backtraces, too. It's really less
headache for everyone if you just stop after the prologue :)
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer
More information about the Gdb
mailing list