有没有办法通过向arm-none-eabi-gcc编译器添加调试标志来在ELF文件中添加本地符号名称?

问题描述 投票:0回答:1

我可以在 elf 文件中最终构建的可执行文件中查看全局符号,例如函数、全局/静态变量。我正在寻找可以将局部变量名称添加到符号表中的编译标志。

我尝试了编译器的多个调试标志,例如 -g3、-ggdb、-gdwarf-3,但没有成功。首先,是否有可能添加本地符号信息?如果是这样,该怎么办?

gcc linker gdb cortex-m arm-none-eabi-gcc
1个回答
0
投票

假设局部变量名是指函数内变量的名称,那么不,这是不可能的。

符号表将名称映射到单个地址。函数内的局部变量在程序的生命周期内可以具有不同的地址。局部变量甚至可能不会放置在内存中,而是保存在寄存器中。符号表无法对此进行建模。

当您添加 -g 标志时,编译器会将调试信息(最有可能采用 DWARF 格式)添加到您的程序中。 DWARF 信息可以代表你的局部变量的所有细节。

© www.soinside.com 2019 - 2024. All rights reserved.