1

-g(或)clang 命令选项是否会--debug增加已编译应用程序的内存占用?具体来说,它会改变嵌入式 ARM 系统上加载的二进制大小吗?

注意:我知道调试版本将符号表和更多调试信息添加到 ELF,但这应该由调试器使用,在主机上运行(例如,带有 Eclipse 的 PC)。问题是它是否会改变加载图像的大小。

4

1 回答 1

4

-g选项仅在二进制文件中添加调试信息,在加载到内存的部分中。实际生成的代码和数据不受影响。

尝试objdump -h在 ELF 二进制文件的两个版本上运行。您将看到一些标有属性的部分,ALLOC而其他部分则没有。只有那些被标记ALLOC的才会在运行时加载或分配内存。您应该观察到这些部分在两个版本之间具有完全相同的大小;实际上,它们应该具有完全相同的内容,您可以根据需要进行objdump --full-contents验证diff。唯一的区别在于未标记的部分ALLOC;这些不会加载到内存中,并且在运行时无效。

于 2020-09-24T20:39:22.747 回答