问题描述
-g
(或--debug
)clang命令选项是否增加了已编译应用程序的内存占用?具体来说,它是否会更改嵌入式ARM系统上加载的二进制大小?
注意:我知道调试版本会向ELF添加符号表和更多调试信息,但是调试器应该在运行于主机(例如,装有Eclipse的PC)上的调试器中使用此信息。问题是,是否更改了加载的图片的大小。
解决方法
否
-g
选项仅在二进制文件中的 not 加载到内存中的部分中添加调试信息。实际生成的代码和数据不受影响。
尝试在两个版本的ELF二进制文件上运行objdump -h
。您将看到某些部分标记有属性ALLOC
,而其他部分则没有。在运行时仅加载或分配标记为ALLOC
的内存。您应注意,这两个版本之间的部分大小完全相同;实际上,它们应该具有完全相同的内容,您可以根据需要使用objdump --full-contents
和diff
进行验证。唯一的区别在于未标记为ALLOC
的部分;这些不会加载到内存中,并且在运行时不会起作用。