setting arbitrary frame <address> returns 0x00000000 in ?? ()

dan clark dlc@ncube.com
Thu Jan 29 03:22:00 GMT 2004


How does one force the base frame to a particular address. 
In the case of a program overwriting the stack one might be able to 
locate a possible address by hand to set the frame for the 
purposes of attempting a trace.

The documentation implies that the frame can be set for i386 with
the command
frame <address>

What is wrong with the following example using gdb 6.0 on redhat linux?
Can the frame be set to a particular address with a single command?  
What would be the steps to accomplish this task?  

Obviously in the following example frame 0 would set the frame correctly 
but would be the steps to use the address for the purposes of setting an 
arbitrary frame, thus trigger the code path
stack.c:parse_frame_specification() case 1 
to setup an arbitrary frame?

Thanks for the clarification.

(gdb) b main
Breakpoint 1 at 0x8048466
(gdb) run
Starting program: /vobs/tools/junk 

Breakpoint 1, 0x08048466 in main ()
(gdb) where
#0  0x08048466 in main ()
(gdb) info frame
Stack level 0, frame at 0xbffff6a0:
 eip = 0x8048466 in main; saved eip 0x4003e507
 Arglist at 0xbffff698, args: 
 Locals at 0xbffff698, Previous frame's sp is 0xbffff6a0
 Saved registers:
  ebp at 0xbffff698, eip at 0xbffff69c
(gdb) frame 0xbffff6a0
#0  0x00000000 in ?? ()

dan
-- 
Dan L. Clark                        503/531-6432
nCUBE, 1825 NW 167th Place, Beaverton, OR  97006



More information about the Gdb mailing list