首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >objcopy和dsymutil有什么区别?

objcopy和dsymutil有什么区别?
EN

Stack Overflow用户
提问于 2015-10-19 12:34:13
回答 1查看 2.7K关注 0票数 9

这两个命令在linux上是:

代码语言:javascript
复制
objcopy --only-keep-debug foo foo.dbg
objcopy --add-gnu-debuglink=foo.dbg foo

相当于mac上的下面

代码语言:javascript
复制
dsymutil <binary> -o <binary>.dSYM

在这个意义上,

  1. 它创建一个独立的调试信息文件。
  2. 它在可执行文件和调试信息文件之间创建一个链接。

那就脱衣服

是linux上的命令:

代码语言:javascript
复制
objcopy --strip-debug foo

代码语言:javascript
复制
strip -g <binary>

相当于mac上的下面

代码语言:javascript
复制
strip -S <binary>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-23 16:59:26

objcopy的--only-keep-debug部分在功能上与dsymutil执行相同的操作。

没有任何工具来记录dSYM中的二进制位置。相反,dSYM &二进制文件共享一个通用UUID,希望查找符号文件的客户端使用DebugSymbols框架,该框架使用各种技巧(例如,Spotlight导入程序、搜索路径、"dSYM查找外部脚本“等)查找单独的调试文件。因此,不需要类似于--add-gnu-debuglink

strip -S的mac版本确实以与binutils版本相同的方式剥离调试信息。不同之处在于,OS上的strip -S实际上不会大大减少二进制文件的大小。在OS上,调试信息总是保存在可执行文件之外--驻留在.o文件或dSYM中。可执行文件只有一个小的“调试映射”,它告诉lldb或dsymutil如何从.o文件链接侏儒。strip -S只需删除调试映射。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33214529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档