Printf the current address in C program

后端 未结 8 1332
时光说笑
时光说笑 2021-02-04 12:27

Imagine I have the following simple C program:

int main() {

int a=5, b= 6, c;
c = a +b; 
return 0;
}

Now, I would like to know the address of

8条回答
  •  独厮守ぢ
    2021-02-04 12:45

    Here's a sketch of an alternative approach:

    Assume that you haven't stripped debug symbols, and in particular you have the line number to address table that a source-level symbolic debugger needs in order to implement things like single step by source line, set a break point at a source line, and so forth.

    Most tool chains use reasonably well documented debug data formats, and there are often helper libraries that implement most of the details.

    Given that and some help from the preprocessor macro __LINE__ which evaluates to the current line number, it should be possible to write a function which looks up the address of any source line.

    Advantages are that no assembly is required, portability can be achieved by calling on platform-specific debug information libraries, and it isn't necessary to directly manipulate the stack or use tricks that break the CPU pipeline.

    A big disadvantage is that it will be slower than any approach based on directly reading the program counter.

提交回复
热议问题