Abh*_*ain 6 gcc gdb clang debug-symbols lldb
这两个命令是否在Linux上:
objcopy --only-keep-debug foo foo.dbg
objcopy --add-gnu-debuglink=foo.dbg foo
Run Code Online (Sandbox Code Playgroud)
相当于下面的mac
dsymutil <binary> -o <binary>.dSYM
Run Code Online (Sandbox Code Playgroud)
在某种意义上相当于
然后剥离
是linux上的命令:
objcopy --strip-debug foo
Run Code Online (Sandbox Code Playgroud)
要么
strip -g <binary>
Run Code Online (Sandbox Code Playgroud)
相当于下面的mac
strip -S <binary>
Run Code Online (Sandbox Code Playgroud)
--only-keep-debugobjcopy的部分在功能上与 dsymutil 相同。
没有任何工具可以记录 dSYM 中的二进制位置。相反,dSYM 和二进制文件共享一个通用 UUID,想要查找符号文件的客户端使用 DebugSymbols 框架,该框架使用各种技巧(例如 Spotlight 导入器、搜索路径、“dSYM 查找外部脚本”等)来查找符号文件单独的调试文件。所以不需要等效于--add-gnu-debuglink.
mac 版本strip -S确实以与 binutils 版本相同的方式去除调试信息。不同之处在于,strip -S在 OS X 上实际上不会大幅减少二进制文件的大小。在 OS X 上,调试信息始终保留在可执行文件之外 - 驻留在 .o 文件或 dSYM 中。可执行文件只有一个小的“调试映射”,它告诉 lldb 或 dsymutil 如何从 .o 文件链接矮人。strip -S只需要删除调试映射。
| 归档时间: |
|
| 查看次数: |
1653 次 |
| 最近记录: |