剥离二进制/ elf程序有什么意义?


9

我只是想知道剥离程序文件是否比节省磁盘空间还有更多好处。


它可以节省CPU或内存吗?

在存储空间紧张的嵌入式系统上,它将节省一些磁盘空间。
Zoredache

在内存中保存一小部分。
symcbean

Answers:


8

在大多数情况下,主要的好处就是节省磁盘空间。第二个好处,也是更可疑的好处是,它也使二进制文件更难以拆卸或逆向工程。尽管在许多情况下,节省的费用可忽略不计,但它也可能会稍微减少内存占用量。

最大的缺点是,如果遇到问题,调试会变得更加困难。

在具有CPU速度和内存/磁盘数量的现代系统上,剥离二进制文件对性能几乎没有任何实际影响。这实际上与调试,“整洁”和个人喜好有关。有些人喜欢始终使用剥离后的二进制文件来生产或“装运”的软件。有些人希望始终保留包含的符号,以防万一。

就个人而言,我更喜欢包含符号。在过去的一年中,我遇到过几次非常令人沮丧的情况,其中商业应用程序存在段错误(或崩溃),并且由于二进制文件被剥离,因此我无法确定问题出在哪里。在至少其中一些情况下,供应商最终给我发送了一个非剥离版本来运行,直到再次崩溃,这样我们才能获得更多有用的调试信息。如果他们在一开始就提供了非剥离版本,那么我们可以更快地解决问题,并减少停机时间。


2
同意,除非您使用的是内存受限的嵌入式系统,例如32MB NSLU2。在这些情况下,RAM中的每个字节计数并减少二进制数的10%是非常常见的。我同样将gdb附加到一个即将死去或死掉的进程上,如果不是因为没有剥离的符号,那将是一条小河。我的看法是,剥离符号用于节省内存和更好地使用高速缓存行。但是请测试后者,因为优化可能会忽略您的期望。
zerolagtime 2010年

1
你说得很对。我的上述评论对典型的台式机/笔记本电脑或服务器使用情况有效,但是剥离二进制文件通常是嵌入式和特殊用途系统的一个巨大胜利。
Christopher Cashell

0

您可以使用调试符号编译软件进行测试,然后将其剥离以进行部署。如果您的调试符号暴露了您不想暴露的东西,那么这可能对您有用

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.