Linux上有这两个命令:
objcopy --only-keep-debug foo foo.dbg
objcopy --add-gnu-debuglink=foo.dbg foo
相当于下面的mac
dsymutil <binary> -o <binary>.dSYM
等同于
然后剥离
是linux上的命令:
objcopy --strip-debug foo
OR
strip -g <binary>
相当于下面的mac
strip -S <binary>
答案 0 :(得分:4)
objcopy的--only-keep-debug
部分在功能上与dsymutil相同。
没有任何工具可以在dSYM中记录二进制位置。相反,dSYM&amp;二进制文件共享一个公共UUID,想要查找符号文件的客户端使用DebugSymbols框架,该框架使用各种技巧(例如Spotlight导入器,搜索路径,&#34; dSYM查找外部脚本&#34;等)来查找单独的调试文件。因此,不需要等同于--add-gnu-debuglink
。
strip -S
的mac版本确实剥离调试信息的方式与binutils版本相同。不同之处在于OS X上的strip -S
实际上并没有太大地减小二进制文件的大小。在OS X上,调试信息始终不在可执行文件中 - 驻留在.o文件或dSYM中。可执行文件只有一个小的调试映射&#34;告诉lldb或dsymutil如何链接.o文件中的矮人。 strip -S
只需删除调试映射。