How to print info of each function by running an executable (compiled with -g) in gdb?

doark@mail.com doark@mail.com
Fri Oct 21 22:22:00 GMT 2016


Hope this is not too late, I've been catching up on my mail.

On Sat, 1 Oct 2016 00:11:58 Peng Yu <pengyu.ut@gmail.com> wrote:
> Hi, I am currently inserting the following line into functions for
> which I want to print the function info. However, this can be tedious
> if the source code is large.
> 
> fprintf(stderr, "%s:%d:%s\n", __FILE__, __LINE__, __PRETTY_FUNCTION__);
> 
> Is there a way to automatically print the information of each function
> being called using gdb?

Don't know, but you can do (in the shell, and you
will need moreutils and gawk (gnu awk)):

for i in SOURCE; do
    gawk '{ if($0 ~ /^{/){ printf("{\n    fprintf(stderr, "
    "\"%%s:%%d:%%s\n\", __FILE__, __LINE__, __PRETTY_FUNCTION__);\n");
    } else { print $0; } }' $i | sponge $i;
done

To undo:

for i in SOURCE; do
    grep -v 'fprintf(stderr, "%s:%d:%s\n", __FILE__, __LINE__, __PRETTY_FUNCTION__);' $i | sponge $i;
done

I've done similar things before, it's simple if you've formatted
your code nicely (and put your unions and structs in your headers)!

Sincerely,
David



More information about the Gdb mailing list