-g或--debug命令选项是否会增加加载的内存占用空间?

问题描述

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

注意:我知道调试版本会向ELF添加符号表和更多调试信息,但是调试器应该在运行于主机(例如,装有Eclipse的PC)上的调试器中使用此信息。问题是,是否更改了加载的图片的大小。

解决方法

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

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