How to check if a macro exists in an object file in C?

前端 未结 2 1555
粉色の甜心
粉色の甜心 2021-01-15 20:26

For example, I define a macro:

#ifdef VERSION
 //.... do something
#endif

How can I check if VERSION exist in my object file o

相关标签:
2条回答
  • 2021-01-15 21:05

    Try compiling with -g3 option in gcc. It stores macro information too in the generated ELF file.

    After this, if you've defined a macro MACRO_NAME just grep for it in the output executable or your object file. For example,

    $ grep MACRO_NAME a.out # any object file will do instead of a.out
    Binary file a.out matches
    

    Or you can even try,

    $ strings -a -n 1 a.out | grep MACRO_NAME
    
     -a Do not scan only the initialized and loaded sections of object files; 
        scan the whole files.
    
     -n min-len Print sequences of characters that are at least min-len characters long,
        instead of the default 4.
    
    0 讨论(0)
  • 2021-01-15 21:23

    The following command displays contents of .debug_macro DWARF section:

    $ readelf --debug-dump=macro path/to/binary
    

    or

    $ objdump --dwarf=macro path/to/binary
    

    You can also use dwarfdump path/to/binary, but it's not easy to leave only .debug_macro section in the output.

    0 讨论(0)
提交回复
热议问题