MachO文件和LLDB调试

MachO文件的介绍

常见的格式:
• 1.可执行文件
• 2.objcet
◦ .o 文件(目标文件)
◦ .a 静态库文件.其实就是N个.o文件的集合
• 3.DYLIB: 动态库文件
◦ dylib
◦ framework
• 4.动态连接器
• 5.DSYM(存放崩溃信息)

文件基本架构

MachO文件和LLDB调试_第1张图片

文件架构可以分为三部分:1.Header(头部)、2.LoadCommands(加载命令)、3.Data(数据);

加载方法

1.点击MachOView工具的主菜单“File”中的“Open”选项便可加载IOS平台可执行文件,对应功能接入如下所示:


MachO文件和LLDB调试_第2张图片

例如加载文件名为“Wechat”的静态库文件,加载成功之后显示的界面如下图所示:


MachO文件和LLDB调试_第3张图片

上图界面出现表明Mach-O文件加载完毕。FatHeader是一个通用二进制文件。在左边窗口点击“Mach Header”选项,可以看到每个类的cpu架构信息、load commands数量 、load commandssize 、file type等信息。
2.也可以使用otool工具查看Macho文件 otool -f xxx

查看Fat文件

可以看到,fat文件只是对各种架构文件的组装,点开 “Fat Header”可以看到支持的架构,图中显示的支持ARM_V7 、ARM_V7S 、ARM_64 、i386 、 X86_64。

点开每一个Static Library 可以看到,和每一个单独的Static Library的信息一样。

拆分/整合二进制文件

瘦身/拆分

$ lipo xxx -thin armv7 -output macho_armv7    //xxx是app包的可执行文件
$ lipo xxx -thin armv64 -output macho_armv64

整合

$ lipo -create macho_armv7 macho_arm64 -output machO_v7_64

你可能感兴趣的:(MachO文件和LLDB调试)