This is the mail archive of the
gdb@sources.redhat.com
mailing list for the GDB project.
Re: Problems in the edge of functions
- From: Daniel Jacobowitz <drow at mvista dot com>
- To: a2782 at dis dot ulpgc dot es
- Cc: gdb at sources dot redhat dot com
- Date: Thu, 13 Feb 2003 12:07:55 -0500
- Subject: Re: Problems in the edge of functions
- References: <200302131757.h1DHvbE01132@siglo21.dis.ulpgc.es>
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