Debugging 映射文件规范?

Debugging 映射文件规范?,debugging,gcc,Debugging,Gcc,我正在创建一个调试器工具。 我需要GCC编译器的映射文件结构规范。 为了找到内存如何映射到不同数据类型的不同变量(类、内部类、静态、静态常量、外部、模板、映射文件中的typedef变量规范)。 我还想知道如何将符号添加到不同的变量中,以便在映射文件中进行区分。 告诉我怎么走 不要认为您需要了解详细的映射文件格式,-Wl和--print MAP应该足以从编译器获得可读的文本映射数据 $ cat x.c | grep alpha int alpha = one; int c = do_opera

我正在创建一个调试器工具。 我需要GCC编译器的映射文件结构规范。 为了找到内存如何映射到不同数据类型的不同变量(类、内部类、静态、静态常量、外部、模板、映射文件中的typedef变量规范)。 我还想知道如何将符号添加到不同的变量中,以便在映射文件中进行区分。
告诉我怎么走

不要认为您需要了解详细的映射文件格式,-Wl和--print MAP应该足以从编译器获得可读的文本映射数据

$ cat x.c | grep alpha
int alpha = one;
  int c = do_operation(alpha, b);
  printf( "%d op %d = %d\n", alpha, b, c);

$ g++ -Wl,--print-map ./x.c  | grep -P "(alpha|printf)"
                0x00000000080483f0                printf@@GLIBC_2.0
                0x000000000804a018                alpha
在上面,您可以看到x.c包含变量“alpha”的声明,并且还使用“printf”。正如您所看到的,地址可以通过--print map paramater获得


希望这会有所帮助。

删除了C#标记-不知道为什么会有这样的标记…不要在问题标题中使用所有的大写字母。顺便说一句,如果您想知道如何阅读由打印地图生成的文本,请记住阅读ld文档这不是轻松阅读: