This is the mail archive of the gdb@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Problems in the edge of functions


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]