Re: Print addresses of all local variables

Doug Evans <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <CADPb22Sagggdv0TsX-4wRJRT3O-FmxjgAD921w=Hh15shzPnkg@mail.gmail.com>
On Wed, Jun 17, 2015 at 3:55 AM, Suryansh Kumar <[email protected]> wrote:
> Print addresses
> ----------------
> I want to print the addresses of all the local and global variables
> which are being used in the current frame and store them in a file.
> "info local" prints the values of all local variables. I need something
> to print the addresses in a similar way. Is there any built in
> command for it?

No, but one might be able to do something in python.

https://sourceware.org/gdb/current/onlinedocs/gdb/Python-API.html

> GDB macro coding language tutorial
> -----------------------------------
> I tried writing a gdb script for the same using the gdb macro coding
> language, but I am not able to find sufficient material for it. Any
> handbook or tutorial on the gdb scripting language which covers its
> usage and syntax in detail is urgently needed. I need to know if we can
> declare arrays and strings, and perform comparisons on them.

gdb's own scripting language is really limited.
Use Python.

There's also Guile support, but the Python support is more complete.
https://sourceware.org/gdb/current/onlinedocs/gdb/Guile.html

> "step" into non-library functions
> ----------------------------------
> I need to store the data at the end of every function when it is
> executed using a gdb script. I am not able to use the 'step' command
> in the script as it also steps into the library functions, which I
> don't need. Need a way to run step conditionally on user functions
> only.

There's no real way to distinguish user from non-user functions.
There are ways to achieve what you want though.

1) The "skip" set of commands.
https://sourceware.org/gdb/current/onlinedocs/gdb/Skipping-Over-Functions-and-Files.html

2) gdb won't step into functions that are missing debug info.
You *could*, though I'm not recommending this as a great approach,
remove the debug info for functions you don't want gdb to step into.
E.g., if you have debug info installed for glibc, temporarily remove it.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.