Re: Find offset of block instruction in function

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 03/21/2016 12:59 AM, crasypantz wrote:
Hello,

Given the result of 'DECL_SAVED_TREE' for a FUNCTION_DECL, is there a way to
determine the offset into the function for a given block instruction?
Perhaps the question is not worded correctly, or maybe what I'm asking
doesn't make sense. But essentially, say there is a function:

void something() {
     int blah;

     blah = 2;

     if (1) {
         printf("blah: %d\n, blah);
     }
}

In this case is there a way to determine the offset of 'if (1)' or 'printf'?
By 'offset' I mean in the same sense 'backtrace_symbols' includes "a
hexadecimal offset into the function." If so does it depend on optimization
or anything else?

I'm not sure if you're asking about how to do this within GCC
itself as it's compiling a function or in general (outside GCC).
I don't know the answer to the first question though I would
expect it to be possible (if perhaps not easy) since the latter
is both (possible and easy).  If you are asking about GCC
internals you might have better luck in the gcc development
list.  gcc-help is for questions about building or using GCC.

The DWARF debugging information emitted by compilers contains
what's called a line number program.  The program is a sequence
of DWARF opcodes and a mapping between instruction addresses and
source file names and line numbers that let the debugger follow
the execution of the the program as the user steps through it
line by line.  The line number program can be viewed by Binutils
(see objdump --dwarf=rawline) and Elfutils (readelf -wl).

This is independent of optimization but as you may have seen
while debugging an optimized program, it's not always 100%
accurate due to code being moved around or even eliminated
by the optimizer.  It does (obviously) depend on enabling
debugging with -g.

Martin



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux