List Info

Thread: Pls help: regarding gdb internals




Pls help: regarding gdb internals
country flaguser name
Canada
2008-01-16 13:59:13
Hi All,

 I am new to gdb code and trying to learn more things. i
need help regarding gdb internals.

Can anyone write few lines about how does gdb internally
works. I went to "Gdb internals guide" but
couldn't find much information specifically which i am
looking for. I want information like when we give command
"$gdb test.exe" then how internaly it works. Does
it start reading symbols and start making symbol table with
this command ? 
Does it start creating stack frames as we give command
"run" or before even that with "$gdb
test.exe"? I am basically interested to know about
creation of frames and how does gdb read them back when we
give "backtrace" command? 

I am not sure but i think to creat a frame it calls
_initialize_stack (void) and from this it calls
fun_command(char *arg, int from_tty) then
parse_frame_specification(char *frame_exp) & then
create_new_frame(CORE_ADDR addr, CORE_ADDR pc) function.

Pls help.

Thanks & Regards,
Arun


     
____________________________________________________________
________________________
Looking for last minute shopping deals?  
Find them fast with Yahoo! Search.  http://tools.search.yahoo.com/newsearch/ca
tegory.php?category=shopping

Re: Pls help: regarding gdb internals
country flaguser name
United States
2008-01-16 15:55:14
Arun Paneri <arunpaneri at yahoo.com> writes:
>  I am new to gdb code and trying to learn more things.
i need help
>  regarding gdb internals.

Hi.  I'm afraid that sketching "how gdb works
internally" would take a
very long time.

In gdbint.texinfo, the section on "Symbol
handling" should answer some
of your questions.  The section on "Algorithms"
has more general
information.

Re: Pls help: regarding gdb internals
country flaguser name
United States
2008-01-16 16:06:55
On Wed, 2008-01-16 at 11:59 -0800, Arun Paneri wrote:
> Hi All,
> 
>  I am new to gdb code and trying to learn more things.
i need help regarding gdb internals.
> 
> Can anyone write few lines about how does gdb
internally works.
>  I went to "Gdb internals guide" but couldn't
find much information 
> specifically which i am looking for. I want information
like 
> when we give command
> "$gdb test.exe" 
> then how internaly it works. Does it start reading
symbols
>  and start making symbol table with this command ? 

Yes.

> Does it start creating stack frames as we give command
"run" or before even that with "$gdb
test.exe"?

No, and no.  Before you "run" a program, there are
no stack frames.
But gdb does not start constructing its internal stack
frame
representation until the program STOPS, eg. at a breakpoint
or
after executing a "step".

>  I am basically interested to know about creation of
frames and how does gdb read them back when we give
"backtrace" command? 

For performance reasons, gdb tries to construct its stack
frame
data lazily -- it postpones the work whenever possible.

So, in general, whenever the program stops, gdb will
construct
one (and hopefully only one) stack frame -- the one for the

function in which the program stopped.

If you give the "up" command, gdb will construct
the next
(one) stack frame.

If you ask for "backtrace 10" it will construct
the next
ten stack frames.  And if you ask for a full backtrace, 
gdb will construct as many stack frames as it can find.

> 
> I am not sure but i think to creat a frame it calls
_initialize_stack (void)

No.  That function is the initializer for the
"stack.c" module.
It is called when gdb starts up, and just initializes the 
infrastructure for stack manipulation.

>  and from this it calls fun_command(char *arg, int
from_tty) then parse_frame_specification(char *frame_exp)
& then create_new_frame(CORE_ADDR addr, CORE_ADDR pc)
function.

Start with the function "get_prev_frame", and work
your way up (and
down) from there.





[1-3]

about | contact  Other archives ( Real Estate discussion Medical topics )