软件的Crash,是我们做软件的人必须要解决的问题,有一些Crash,可以直接从堆栈信息里面找到Crash的原因和地方,但是有些Crash之后,在堆栈信息里面,全是16进制,这个就很难确定Crash的地方。因此,解决Crash使我们必须要掌握的一个知识点。当初学习的时候,也在网上看了很多这方面的资料,但是大部分说的都不详细,而且有些还有错,会导致,走很大的弯路。所以,自己总结一下这方面的东西,也加强一下自己的记忆,与君共勉!
前言
在APP用户量达到一定基数的时候,用户在使用应用的期间,或多或少的会碰到一些致使程序闪退的情况,而我们需要将这些情况收集起来。
一般情况下,应用程序发生闪退是,通常都会采用第三方平台进行统计分析,例如:
1、友盟
2、Flurry
3、Crashlytics
4、腾讯bugly
等等这些都是我们平时常用的一些记录软件Crash的工具,使用第三方的这些工具,比较方便,因为他们帮我们做了最重要的一步,就是把Crash日志里面看不懂的堆栈信息翻译成了我们能看懂的代码里面的方法名。这个过程就是符号化的过程。符号化需要三个基本文件(.dsym文件,.app文件,.crash文件)并且这三个文件里面的UUID必须一致才可以进行符号化。符号化完成之后,这些堆栈信息就变成了我们看得懂的方法名,这样子直接就可以找到Crash的地方,进行修改。但是,有时候,由于没有网络,或者其他原因,导致这些工具没有捕获到这个Crash信息,丢失了,就需要我们自己去看这个堆栈信息,并解决。所以看懂Crash日志,对于我们来说,至关重要。
一:获取Crash日志,分两种情况,一种是我们已经把软件发布出去了,获取线上的Crash日志,一种是还没发布出去,在测试阶段,获取Crash日志。接下来,我们一个个详细讲解一下。
首先:不管线上还是线下,都需要获取得到项目运行时的.DSYM文件。
iOS Debug/relese 环境下生成dSYM文件配置
在Build Setting中设置以下:
Debug Information Format -> DWARF with dSYM File
Generate Debug Symbols -> YES
这样子设置,不管是在Debug模式下,还是relese模式下,都会都会生成项目运行所对应的.DSYM文件。方便我们后续问题的调试。
1.线下测试,符号化过程中,获取相应的三个文件
1.1 获取.crash文件
image.png如果在线下测试中,出现了软件Crash的情况
USB连接设备,接着在XCode菜单栏依次选择:Window -> Devices And Simulators,接着选择View Device Logs
1.连接真机
2.找到Xcode --> Window --> Devices
然后,等待XCode拷贝Crash Log,在右上角可以通过App的名字搜索,比如这里我搜索的是微信,可以右键导出Crash Log到本地来分析:
image在这张图中的左侧可以看见,process对应的是APP名称, type是类型,都是闪退奔溃类型,date/time是出现这个奔溃的事件。你可以根据这些对应的信息,选择自己需要的Crash日志,选中之后,在右击一下,可以export log,导出这个奔溃日志,这个日志就是.crash文件,可以修改一下这个文件名称,用APP+.crash来名称,方便后续使用。
接着给大家详细说明一下这个.crash文件里面的内容,方便大家更加深刻的认识这个文件:
打开Crash Log 会看到如下的信息:
Incident Identifier: AF4F2C83-8F68-47EF-B5AA-F16B067B5DF4
CrashReporter Key: 5670de85ee1f0f3c904891536e81ec086ed4b35b
Hardware Model: iPhone8,1
Process: kidneyUser [896]
Path: /private/var/containers/Bundle/Application/48C71AA1-EB99-49B1-ABD7-2903DBA8E394/kidneyUser.app/kidneyUser
Identifier: kidneyDiseaseHospitalUser
Version: 1 (1.0)
Code Type: ARM-64 (Native)
Parent Process: launchd [1]
Date/Time: 2016-05-05 10:45:43.43 +0800
Launch Time: 2016-05-05 10:42:07.07 +0800
OS Version: iOS 9.3.1 (13E238)
Report Version: 105
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Triggered by Thread: 0
Filtered syslog:
None found
Last Exception Backtrace:
0 CoreFoundation 0x181aeee38 __exceptionPreprocess + 124
1 libobjc.A.dylib 0x181153f80 objc_exception_throw + 56
2 CoreData 0x18393ab44 -[NSManagedObjectModel initWithContentsOfURL:] + 856
3 kidneyUser 0x1002b81d8 0x1000d8000 + 1966552
4 kidneyUser 0x1002b82dc 0x1000d8000 + 1966812
5 kidneyUser 0x1002b86a0 0x1000d8000 + 1967776
6 kidneyUser 0x1002b87cc 0x1000d8000 + 1968076
7 kidneyUser 0x1002b8024 0x1000d8000 + 1966116
8 UIKit 0x186cc9128 -[UIApplication _terminateWithStatus:] + 280
9 UIKit 0x186ee7f08 __102-[UIApplication _handleApplicationDeactivationWithScene:shouldForceExit:transitionContext:completion:]_block_invoke2017 + 796
10 UIKit 0x186eeafd8 _runAfterCACommitDeferredBlocks + 292
11 UIKit 0x186ef8990 _cleanUpAfterCAFlushAndRunDeferredBlocks + 92
12 UIKit 0x186c2a4a4 _afterCACommitHandler + 96
13 CoreFoundation 0x181aa47b0 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 32
14 CoreFoundation 0x181aa2554 __CFRunLoopDoObservers + 372
15 CoreFoundation 0x181aa2984 __CFRunLoopRun + 928
16 CoreFoundation 0x1819ccd10 CFRunLoopRunSpecific + 384
17 GraphicsServices 0x1832b4088 GSEventRunModal + 180
18 UIKit 0x186ca1f70 UIApplicationMain + 204
19 kidneyUser 0x1002c71e8 0x1000d8000 + 2028008
20 libdyld.dylib 0x18156a8b8 start + 4
Global Trace Buffer (reverse chronological seconds):
2.434148 AppleJPEG 0x000000018354ea88 [0x12e203600] Releasing session
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x000000018168811c __pthread_kill + 8
1 libsystem_pthread.dylib 0x0000000181754ef8 pthread_kill + 112
2 libsystem_c.dylib 0x00000001815f9dac abort + 140
3 libc++abi.dylib 0x000000018112d3f4 __cxa_bad_cast + 0
4 libc++abi.dylib 0x0000000181149e98 default_unexpected_handler() + 0
5 libobjc.A.dylib 0x0000000181154248 _objc_terminate() + 124
6 libc++abi.dylib 0x0000000181146f44 std::__terminate(void (*)()) + 16
7 libc++abi.dylib 0x0000000181146b10 __cxa_rethrow + 144
8 libobjc.A.dylib 0x0000000181154120 objc_exception_rethrow + 44
9 CoreFoundation 0x00000001819ccdb8 CFRunLoopRunSpecific + 552
10 GraphicsServices 0x00000001832b4088 GSEventRunModal + 180
11 UIKit 0x0000000186ca1f70 UIApplicationMain + 204
12 kidneyUser 0x00000001002c71e8 0x1000d8000 + 2028008
13 libdyld.dylib 0x000000018156a8b8 start + 4
以上就是Crash Log 文件的信息(设备的信息, crash信息,异常信息, 线程信息)
下面具体说一下文件里面的重要信息:
1、首先是设备和crash信息
Incident Identifier: AF4F2C83-8F68-47EF-B5AA-F16B067B5DF4 // crash的ID
CrashReporter Key: 5670de85ee1f0f3c904891536e81ec086ed4b35b // crash 的设备ID
Hardware Model: iPhone8,1 // 手机的型号 (iPhone8,1代表iPhone6s 8,2 代表iPhone6s Plus)
Process: kidneyUser [896] // App的名称 (该App的进程ID)
Path: /private/var/containers/Bundle/Application/48C71AA1-EB99-49B1-ABD7-2903DBA8E394/kidneyUser.app/kidneyUser // APP 的位置 路径
Identifier: kidneyDiseaseHospitalUser // bundle ID
Version: 1 (1.0) // APP的版本号
Code Type: ARM-64 (Native) // app的应用架构
Parent Process: launchd [1]
Date/Time: 2016-05-05 10:45:43.43 +0800 // crash发生的时间
Launch Time: 2016-05-05 10:42:07.07 +0800 // 进入应用的时间
OS Version: iOS 9.3.1 (13E238) // iOS系统的版本
Report Version: 105
如果产品上线之后, 回收集大量的Crash Log日志文件, 可以对Crash文件里面的手机型号,版本号, 手机型号, iOS系统版本,进行分类, 可以获得更多的信息, 更好的解决bug甚至未知的bug具体原因, 做更好的测试
注意:这里再说明一下这个Hardware Model(硬件模型),根据这个是根据硬件模型对应设备名称来判断设备是什么手机的。用以下方法来判断,由于我没有xr 、xs 、xs max手机,所以里面没有添加进去,大家可以根据需求把这些添加进去,我这里只添加到了iPhone x:
#import "XZPublicClass.h"
#import "sys/utsname.h"
@implementation XZPublicClass
// 使用硬件模型对应设备名称来判断设备
+ (NSString *)getDeviceName {
struct utsname systemInfo;
uname(&systemInfo);
NSString *deviceString = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
if ([deviceString isEqualToString:@"iPhone3,1"]) return @"iPhone 4";
if ([deviceString isEqualToString:@"iPhone3,2"]) return @"iPhone 4";
if ([deviceString isEqualToString:@"iPhone3,3"]) return @"iPhone 4";
if ([deviceString isEqualToString:@"iPhone4,1"]) return @"iPhone 4S";
if ([deviceString isEqualToString:@"iPhone5,1"]) return @"iPhone 5";
if ([deviceString isEqualToString:@"iPhone5,2"]) return @"iPhone 5 (GSM+CDMA)";
if ([deviceString isEqualToString:@"iPhone5,3"]) return @"iPhone 5c (GSM)";
if ([deviceString isEqualToString:@"iPhone5,4"]) return @"iPhone 5c (GSM+CDMA)";
if ([deviceString isEqualToString:@"iPhone6,1"]) return @"iPhone 5s (GSM)";
if ([deviceString isEqualToString:@"iPhone6,2"]) return @"iPhone 5s (GSM+CDMA)";
if ([deviceString isEqualToString:@"iPhone7,1"]) return @"iPhone 6 Plus";
if ([deviceString isEqualToString:@"iPhone7,2"]) return @"iPhone 6";
if ([deviceString isEqualToString:@"iPhone8,1"]) return @"iPhone 6s";
if ([deviceString isEqualToString:@"iPhone8,2"]) return @"iPhone 6s Plus";
if ([deviceString isEqualToString:@"iPhone8,4"]) return @"iPhone SE";
if ([deviceString isEqualToString:@"iPhone9,1"]) return @"国行、日版、港行iPhone 7";
if ([deviceString isEqualToString:@"iPhone9,2"]) return @"港行、国行iPhone 7 Plus";
if ([deviceString isEqualToString:@"iPhone9,3"]) return @"美版、台版iPhone 7";
if ([deviceString isEqualToString:@"iPhone9,4"]) return @"美版、台版iPhone 7 Plus";
if ([deviceString isEqualToString:@"iPhone10,1"]) return @"国行(A1863)、日行(A1906)iPhone 8";
if ([deviceString isEqualToString:@"iPhone10,4"]) return @"美版(Global/A1905)iPhone 8";
if ([deviceString isEqualToString:@"iPhone10,2"]) return @"国行(A1864)、日行(A1898)iPhone 8 Plus";
if ([deviceString isEqualToString:@"iPhone10,5"]) return @"美版(Global/A1897)iPhone 8 Plus";
if ([deviceString isEqualToString:@"iPhone10,3"]) return @"iPhoneX";//@"国行(A1865)、日行(A1902)iPhone X";
if ([deviceString isEqualToString:@"iPhone10,6"]) return @"iPhoneX";//@"美版(Global/A1901)iPhone X";
if ([deviceString isEqualToString:@"iPod1,1"]) return @"iPod Touch 1G";
if ([deviceString isEqualToString:@"iPod2,1"]) return @"iPod Touch 2G";
if ([deviceString isEqualToString:@"iPod3,1"]) return @"iPod Touch 3G";
if ([deviceString isEqualToString:@"iPod4,1"]) return @"iPod Touch 4G";
if ([deviceString isEqualToString:@"iPod5,1"]) return @"iPod Touch (5 Gen)";
if ([deviceString isEqualToString:@"iPad1,1"]) return @"iPad";
if ([deviceString isEqualToString:@"iPad1,2"]) return @"iPad 3G";
if ([deviceString isEqualToString:@"iPad2,1"]) return @"iPad 2 (WiFi)";
if ([deviceString isEqualToString:@"iPad2,2"]) return @"iPad 2";
if ([deviceString isEqualToString:@"iPad2,3"]) return @"iPad 2 (CDMA)";
if ([deviceString isEqualToString:@"iPad2,4"]) return @"iPad 2";
if ([deviceString isEqualToString:@"iPad2,5"]) return @"iPad Mini (WiFi)";
if ([deviceString isEqualToString:@"iPad2,6"]) return @"iPad Mini";
if ([deviceString isEqualToString:@"iPad2,7"]) return @"iPad Mini (GSM+CDMA)";
if ([deviceString isEqualToString:@"iPad3,1"]) return @"iPad 3 (WiFi)";
if ([deviceString isEqualToString:@"iPad3,2"]) return @"iPad 3 (GSM+CDMA)";
if ([deviceString isEqualToString:@"iPad3,3"]) return @"iPad 3";
if ([deviceString isEqualToString:@"iPad3,4"]) return @"iPad 4 (WiFi)";
if ([deviceString isEqualToString:@"iPad3,5"]) return @"iPad 4";
if ([deviceString isEqualToString:@"iPad3,6"]) return @"iPad 4 (GSM+CDMA)";
if ([deviceString isEqualToString:@"iPad4,1"]) return @"iPad Air (WiFi)";
if ([deviceString isEqualToString:@"iPad4,2"]) return @"iPad Air (Cellular)";
if ([deviceString isEqualToString:@"iPad4,4"]) return @"iPad Mini 2 (WiFi)";
if ([deviceString isEqualToString:@"iPad4,5"]) return @"iPad Mini 2 (Cellular)";
if ([deviceString isEqualToString:@"iPad4,6"]) return @"iPad Mini 2";
if ([deviceString isEqualToString:@"iPad4,7"]) return @"iPad Mini 3";
if ([deviceString isEqualToString:@"iPad4,8"]) return @"iPad Mini 3";
if ([deviceString isEqualToString:@"iPad4,9"]) return @"iPad Mini 3";
if ([deviceString isEqualToString:@"iPad5,1"]) return @"iPad Mini 4 (WiFi)";
if ([deviceString isEqualToString:@"iPad5,2"]) return @"iPad Mini 4 (LTE)";
if ([deviceString isEqualToString:@"iPad5,3"]) return @"iPad Air 2";
if ([deviceString isEqualToString:@"iPad5,4"]) return @"iPad Air 2";
if ([deviceString isEqualToString:@"iPad6,3"]) return @"iPad Pro 9.7";
if ([deviceString isEqualToString:@"iPad6,4"]) return @"iPad Pro 9.7";
if ([deviceString isEqualToString:@"iPad6,7"]) return @"iPad Pro 12.9";
if ([deviceString isEqualToString:@"iPad6,8"]) return @"iPad Pro 12.9";
if ([deviceString isEqualToString:@"iPad6,11"]) return @"iPad 5 (WiFi)";
if ([deviceString isEqualToString:@"iPad6,12"]) return @"iPad 5 (Cellular)";
if ([deviceString isEqualToString:@"iPad7,1"]) return @"iPad Pro 12.9 inch 2nd gen (WiFi)";
if ([deviceString isEqualToString:@"iPad7,2"]) return @"iPad Pro 12.9 inch 2nd gen (Cellular)";
if ([deviceString isEqualToString:@"iPad7,3"]) return @"iPad Pro 10.5 inch (WiFi)";
if ([deviceString isEqualToString:@"iPad7,4"]) return @"iPad Pro 10.5 inch (Cellular)";
if ([deviceString isEqualToString:@"AppleTV2,1"]) return @"Apple TV 2";
if ([deviceString isEqualToString:@"AppleTV3,1"]) return @"Apple TV 3";
if ([deviceString isEqualToString:@"AppleTV3,2"]) return @"Apple TV 3";
if ([deviceString isEqualToString:@"AppleTV5,3"]) return @"Apple TV 4";
if ([deviceString isEqualToString:@"i386"]) return @"Simulator";
if ([deviceString isEqualToString:@"x86_64"]) return @"Simulator";
return deviceString;
}
@end
所以根据以上信息,就可以知道刚才这个.crash文件中的大概意思就是:2016-05-05 10:45:43.43 在系统为: iOS 9.3.1的iPhone6s上发生的奔溃。软件版本为: 1.0
2、其次是异常信息
Exception Type: EXC_BAD_ACCESS (SIGABRT) //异常的类型
Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000000000118 //异常子类型
Triggered by Thread: 0 //异常发生的线程(0为主线程,其他为子线程)
3、线程信息
Last Exception Backtrace:
0 CoreFoundation 0x182780f48 __exceptionPreprocess + 124
1 libobjc.A.dylib 0x197333f80 objc_exception_throw + 56
2 CoreFoundation 0x182780e90 +[NSException raise:format:] + 120
3 [AppName] 0x100c42a40 UmengSignalHandler + 144
4 libsystem_platform.dylib 0x197d6193c _sigtramp + 52
5 [AppName] 0x1005d9f38 CScopePtr<IAVGAudioLogic>::operator IAVGAudioLogic*<IAVGAudioLogic>() (xprefc.h:165)
6 [AppName] 0x1005d3b8c tencent::av::AVRoomMultiImpl::GetAudioLogic() (av_room_multi_impl.h:119)
7 [AppName] 0x10057076c tencent::av::AVAudioCtrlImpl::SetAudioOutputMode(int) (av_audio_ctrl_impl.cpp:443)
8 [AppName] 0x10044dc3c -[AVBasicManager changeSpeakerMode:] (AVManager.mm:525)
9 [AppName] 0x100296e1c -[KTQAVRoom enableSpeakerMode:] (KTQAVRoom.m:345)
10 [AppName] 0x1002970d0 -[KTQAVRoom settingSpeaker:] (KTQAVRoom.m:362)
11 [AppName] 0x1003d5464 -[KTChatView onAudioNotificationReceived:] (KTChatView.m:685)
一般来说,通过异常信息和线程信息就可以找到crash的原因了。
2.1 获取.app 和.dsym文件
如下图所示,找到该位置,在show in finder就可以
BA61975A990818686495E7C2DAAA0385.jpg
show in finder后:
EF6C3486-50E9-4EC4-8AF2-9DDBD89C3B7F.png
在这里可以看到。里面.app问价和.dsym文件都存在。其实他们是一起生成的。每次软件重新运行,都会重新生成新的.app和.dsym文件。
注意:这里打开之后,可能显示的文件名称没后缀.app而直接是一个软件名称,如下图:
10C7866A610604B9BA49F21032C3FB09.jpg
看到这个不要犹豫,这个文件就是你需要的.app文件,只是没有显示出来后缀而已。如果要显示出来后缀的话。可以点击仿达:如下操作:
DFCCFED6-E3E0-499C-B05C-430030068F87.png
点击偏好设置,在点击高级,在勾选显示所有文件扩展名就可以看到后缀了(如下图):
37BC8ACDB3B9D813A698B5FAC58E59CA.jpg
2.3 三个文件准备完毕,符号化开始
首先可以把三个文件都拉到桌面上,方便使用:如下图:
符号化之前,首先得确保这三个文件里面的UUID是一致的,如果不一致。就说名不是本次Crash对应的文件,就不能进行符号化。所以,我们首先来查看确定一下这三个文件里面的UUID是否一致:
首先查看.dsym文件里面的UUID:
获取.dsym文件里面的UUID:打开终端,在终端输入:xcrun dwarfdump --uuid ~后面直接把.dsym文件拖进终端,回车就好
比如:
ebematedeMac-mini:Resources ebemate$ xcrun dwarfdump --uuid ~/Users/ebemate/Desktop/Empty.app.dSYM
输入之后,回车如果报已下错误:
/Users/ebemate/Users/ebemate/Desktop/Empty.app.dSYM: No such file or directory
ebematedeMac-mini:Resources ebemate$ xcrun dwarfdump --uuid ~/Users/ebemate/Desktop/Empty.app.dSYM
/Users/ebemate/Users/ebemate/Desktop/Empty.app.dSYM: No such file or directory
哪就可以把刚才输入的终端命令改为以下:
ebematedeMac-mini:Resources ebemate$ xcrun dwarfdump --uuid ~/Desktop/Empty.app.dSYM
回车之后,你就可以看到.dSYM 里面的UUID了
ebematedeMac-mini:Resources ebemate$ xcrun dwarfdump --uuid ~/Desktop/Empty.app.dSYM
UUID: 67F552F6-BEB3-3467-A1F3-09A4754EBC4D (arm64) /Users/ebemate/Desktop/Empty.app.dSYM/Contents/Resources/DWARF/Ebemate
另外,需要注意的是,有时候,这里打印出来会是两个UUID,如下:
ebematedeMac-mini:~ ebemate$ xcrun dwarfdump --uuid ~/Desktop/Ebemate.app.dSYM
UUID: 719E05C5-2AEF-3DF3-952B-88570128A8CA (armv7) /Users/ebemate/Desktop/Ebemate.app.dSYM/Contents/Resources/DWARF/Ebemate
UUID: EDD8343D-145D-347E-9DB5-C70C3A393CAF (arm64) /Users/ebemate/Desktop/Ebemate.app.dSYM/Contents/Resources/DWARF/Ebemate
之所以会有两个UUID出来,是因为你的软件支持armv7和arm64两个架构。每个架构对应一个UUID,如果想要确定,这两个UUID,哪一个是你现在需要的UUID,你可以查看一下你的.crash文件中是在哪个框架下crash的。对应上,就可以知道是哪个UUID了。
在这里,你如果想知道自己的软件目前支持什么架构的话,你可以如下操作查看:
在终端窗口输入:
lipo -info +.app文件的路径/APP名称
例如:
lipo -info /Users/ebemate/Desktop/Ebemate.app/Ebemate
在回车你就可以看到:Architectures in the fat file: /Users/ebemate/Desktop/Ebemate.app/Ebemate are: armv7 arm64
ebematedeMac-mini:~ ebemate$ lipo -info /Users/ebemate/Desktop/Ebemate.app/Ebemate
Architectures in the fat file: /Users/ebemate/Desktop/Ebemate.app/Ebemate are: armv7 arm64
看到了:armv7 arm64 ,说明你的软件支持这两个架构,具体的情况,根据自己的实际情况去查看。
接下来我们继续查看.app文件里面的UUID
获取. app文件里面的UUID:打开终端,在终端输入:otool -l+.app文件路径/APP名称 | grep -i uuid,回车就好
例如:
otool -l /Users/ebemate/Desktop/Ebemate.app/Ebemate | grep -i uuid
然后你就可以看见:
ebematedeMac-mini:~ ebemate$ otool -l /Users/ebemate/Desktop/ebemate.app/Ebemate | grep -i uuid
cmd LC_UUID
uuid 27B10407-4B27-307E-8ADA-20A88CB39C3E
通过以上你就可以看到,.app文件里面的UUID为:27B10407-4B27-307E-8ADA-20A88CB39C3E。
注意,有时候,这里获取得到的.app文件里面的UUID也会有两个,原因同上,都是因为支持amrv7,arm64两个架构,如下:
ebematedeMac-mini:~ ebemate$ otool -l /Users/ebemate/Desktop/Ebemate.app/Ebemate | grep -i uuid
cmd LC_UUID
uuid 719E05C5-2AEF-3DF3-952B-88570128A8CA
cmd LC_UUID
uuid EDD8343D-145D-347E-9DB5-C70C3A393CAF
如果.app文件里面的UUID你获取得到了两个,那么你怎么确定那个是你需要的UUID啦?一般来说,第一个UUID是armv7架构对应的。第二个UUID是arm64架构对应的。如果,你不太确定的话,你可以根据以下方法去查看:
打开终端,在终端输入:otool -l+.app文件路径/APP名称,回车就好,相当于把获取.app文件的UUID方法中,没有了后面半段
例如:
otool -l /Users/ebemate/Desktop/Ebemate.app/Ebemate
回车之后,你就可以看到如下信息(有点多):
ebematedeMac-mini:~ ebemate$ otool -l /Users/ebemate/Desktop/Ebemate.app/Ebemate
/Users/ebemate/Desktop/Ebemate.app/Ebemate (architecture armv7):
Mach header
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
0xfeedface 12 9 0x00 2 78 7208 0x00218085
Load command 0
cmd LC_SEGMENT
cmdsize 56
segname __PAGEZERO
vmaddr 0x00000000
vmsize 0x00004000
fileoff 0
filesize 0
maxprot 0x00000000
initprot 0x00000000
nsects 0
flags 0x0
Load command 1
cmd LC_SEGMENT
cmdsize 1076
segname __TEXT
vmaddr 0x00004000
vmsize 0x00c5c000
fileoff 0
filesize 12959744
maxprot 0x00000005
initprot 0x00000005
nsects 15
flags 0x0
Section
sectname __text
segname __TEXT
addr 0x00008540
size 0x0096fd64
offset 17728
align 2^6 (64)
reloff 0
nreloc 0
flags 0x80000400
reserved1 0
reserved2 0
Section
sectname __picsymbolstub4
segname __TEXT
addr 0x009782a4
size 0x00002ef0
offset 9912996
align 2^2 (4)
reloff 0
nreloc 0
flags 0x80000408
reserved1 0 (index into indirect symbol table)
reserved2 16 (size of stubs)
Section
sectname __stub_helper
segname __TEXT
addr 0x0097b194
size 0x00002358
offset 9925012
align 2^2 (4)
reloff 0
nreloc 0
flags 0x80000400
reserved1 0
reserved2 0
Section
sectname __objc_methname
segname __TEXT
addr 0x0097d4ec
size 0x00023e19
offset 9934060
align 2^0 (1)
reloff 0
nreloc 0
flags 0x00000002
reserved1 0
reserved2 0
Section
sectname __cstring
segname __TEXT
addr 0x009a1310
size 0x000a2cba
offset 10081040
align 2^4 (16)
reloff 0
nreloc 0
flags 0x00000002
reserved1 0
reserved2 0
Section
sectname __objc_classname
segname __TEXT
addr 0x00a43fca
size 0x00001d16
offset 10747850
align 2^0 (1)
reloff 0
nreloc 0
flags 0x00000002
reserved1 0
reserved2 0
Section
sectname __objc_methtype
segname __TEXT
addr 0x00a45ce0
size 0x000066af
offset 10755296
align 2^0 (1)
reloff 0
nreloc 0
flags 0x00000002
reserved1 0
reserved2 0
Section
sectname __gcc_except_tab
segname __TEXT
addr 0x00a4c390
size 0x00002108
offset 10781584
align 2^2 (4)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __ustring
segname __TEXT
addr 0x00a4e498
size 0x000011e2
offset 10790040
align 2^1 (2)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __const
segname __TEXT
addr 0x00a4f680
size 0x00210698
offset 10794624
align 2^5 (32)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __swift5_typeref
segname __TEXT
addr 0x00c5fd18
size 0x00000106
offset 12959000
align 2^1 (2)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __swift5_reflstr
segname __TEXT
addr 0x00c5fe20
size 0x00000035
offset 12959264
align 2^4 (16)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __swift5_fieldmd
segname __TEXT
addr 0x00c5fe58
size 0x00000074
offset 12959320
align 2^2 (4)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __swift5_capture
segname __TEXT
addr 0x00c5fecc
size 0x00000108
offset 12959436
align 2^2 (4)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __swift5_types
segname __TEXT
addr 0x00c5ffd4
size 0x00000014
offset 12959700
align 2^2 (4)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Load command 2
cmd LC_SEGMENT
cmdsize 1416
segname __DATA
vmaddr 0x00c60000
vmsize 0x007fc000
fileoff 12959744
filesize 655360
maxprot 0x00000003
initprot 0x00000003
nsects 20
flags 0x0
Section
sectname __nl_symbol_ptr
segname __DATA
addr 0x00c60000
size 0x000033ac
offset 12959744
align 2^2 (4)
reloff 0
nreloc 0
flags 0x00000006
reserved1 751 (index into indirect symbol table)
reserved2 0
Section
sectname __la_symbol_ptr
segname __DATA
addr 0x00c633ac
size 0x00000bbc
offset 12972972
align 2^2 (4)
reloff 0
nreloc 0
flags 0x00000007
reserved1 4058 (index into indirect symbol table)
reserved2 0
Section
sectname __const
segname __DATA
addr 0x00c63f70
size 0x0002f230
offset 12975984
align 2^4 (16)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __cfstring
segname __DATA
addr 0x00c931a0
size 0x0000a1d0
offset 13169056
align 2^2 (4)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __objc_classlist
segname __DATA
addr 0x00c9d370
size 0x000005f8
offset 13210480
align 2^2 (4)
reloff 0
nreloc 0
flags 0x10000000
reserved1 0
reserved2 0
Section
sectname __objc_nlclslist
segname __DATA
addr 0x00c9d968
size 0x00000014
offset 13212008
align 2^2 (4)
reloff 0
nreloc 0
flags 0x10000000
reserved1 0
reserved2 0
Section
sectname __objc_catlist
segname __DATA
addr 0x00c9d97c
size 0x00000060
offset 13212028
align 2^2 (4)
reloff 0
nreloc 0
flags 0x10000000
reserved1 0
reserved2 0
Section
sectname __objc_nlcatlist
segname __DATA
addr 0x00c9d9dc
size 0x00000008
offset 13212124
align 2^2 (4)
reloff 0
nreloc 0
flags 0x10000000
reserved1 0
reserved2 0
Section
sectname __objc_protolist
segname __DATA
addr 0x00c9d9e4
size 0x00000108
offset 13212132
align 2^2 (4)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __objc_imageinfo
segname __DATA
addr 0x00c9daec
size 0x00000008
offset 13212396
align 2^2 (4)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __objc_const
segname __DATA
addr 0x00c9daf8
size 0x0003a2d0
offset 13212408
align 2^3 (8)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __objc_selrefs
segname __DATA
addr 0x00cd7dc8
size 0x0000486c
offset 13450696
align 2^2 (4)
reloff 0
nreloc 0
flags 0x10000005
reserved1 0
reserved2 0
Section
sectname __objc_protorefs
segname __DATA
addr 0x00cdc634
size 0x00000038
offset 13469236
align 2^2 (4)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __objc_classrefs
segname __DATA
addr 0x00cdc66c
size 0x00000828
offset 13469292
align 2^2 (4)
reloff 0
nreloc 0
flags 0x10000000
reserved1 0
reserved2 0
Section
sectname __objc_superrefs
segname __DATA
addr 0x00cdce94
size 0x00000474
offset 13471380
align 2^2 (4)
reloff 0
nreloc 0
flags 0x10000000
reserved1 0
reserved2 0
Section
sectname __objc_ivar
segname __DATA
addr 0x00cdd308
size 0x00001c64
offset 13472520
align 2^2 (4)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __objc_data
segname __DATA
addr 0x00cdef6c
size 0x00003c98
offset 13479788
align 2^2 (4)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __data
segname __DATA
addr 0x00ce2c20
size 0x0001c3d4
offset 13495328
align 2^5 (32)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __bss
segname __DATA
addr 0x00cff000
size 0x005fe768
offset 0
align 2^5 (32)
reloff 0
nreloc 0
flags 0x00000001
reserved1 0
reserved2 0
Section
sectname __common
segname __DATA
addr 0x01300000
size 0x0015ace0
offset 0
align 2^15 (32768)
reloff 0
nreloc 0
flags 0x00000001
reserved1 0
reserved2 0
Load command 3
cmd LC_SEGMENT
cmdsize 56
segname __LINKEDIT
vmaddr 0x0145c000
vmsize 0x00088000
fileoff 13631488
filesize 552592
maxprot 0x00000001
initprot 0x00000001
nsects 0
flags 0x0
Load command 4
cmd LC_DYLD_INFO_ONLY
cmdsize 48
rebase_off 13631488
rebase_size 35028
bind_off 13666516
bind_size 17596
weak_bind_off 13684112
weak_bind_size 56
lazy_bind_off 13684168
lazy_bind_size 20480
export_off 13704648
export_size 166540
Load command 5
cmd LC_SYMTAB
cmdsize 24
symoff 13926728
nsyms 1196
stroff 13960316
strsize 26824
Load command 6
cmd LC_DYSYMTAB
cmdsize 80
ilocalsym 0
nlocalsym 1
iextdefsym 1
nextdefsym 3
iundefsym 4
nundefsym 1192
tocoff 0
ntoc 0
modtaboff 0
nmodtab 0
extrefsymoff 0
nextrefsyms 0
indirectsymoff 13941080
nindirectsyms 4809
extreloff 0
nextrel 0
locreloff 0
nlocrel 0
Load command 7
cmd LC_LOAD_DYLINKER
cmdsize 28
name /usr/lib/dyld (offset 12)
Load command 8
cmd LC_UUID
cmdsize 24
uuid 719E05C5-2AEF-3DF3-952B-88570128A8CA
Load command 9
cmd LC_VERSION_MIN_IPHONEOS
cmdsize 16
version 9.0
sdk 12.2
Load command 10
cmd LC_SOURCE_VERSION
cmdsize 16
version 0.0
Load command 11
cmd LC_MAIN
cmdsize 24
entryoff 391443
stacksize 0
Load command 12
cmd LC_ENCRYPTION_INFO
cmdsize 20
cryptoff 16384
cryptsize 12943360
cryptid 0
Load command 13
cmd LC_LOAD_DYLIB
cmdsize 48
name /usr/lib/libc++.1.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 400.9.4
compatibility version 1.0.0
Load command 14
cmd LC_LOAD_DYLIB
cmdsize 48
name /usr/lib/libz.1.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.2.11
compatibility version 1.0.0
Load command 15
cmd LC_LOAD_DYLIB
cmdsize 68
name @rpath/AFNetworking.framework/AFNetworking (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 16
cmd LC_LOAD_DYLIB
cmdsize 76
name @rpath/CocoaAsyncSocket.framework/CocoaAsyncSocket (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 17
cmd LC_LOAD_DYLIB
cmdsize 52
name @rpath/FMDB.framework/FMDB (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 18
cmd LC_LOAD_DYLIB
cmdsize 80
name @rpath/IQKeyboardManager.framework/IQKeyboardManager (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 19
cmd LC_LOAD_WEAK_DYLIB
cmdsize 92
name /System/Library/Frameworks/JavaScriptCore.framework/JavaScriptCore (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 607.1.40
compatibility version 1.0.0
Load command 20
cmd LC_LOAD_DYLIB
cmdsize 72
name @rpath/MBProgressHUD.framework/MBProgressHUD (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 21
cmd LC_LOAD_DYLIB
cmdsize 64
name @rpath/MJRefresh.framework/MJRefresh (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 22
cmd LC_LOAD_DYLIB
cmdsize 60
name @rpath/Masonry.framework/Masonry (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 23
cmd LC_LOAD_DYLIB
cmdsize 64
name @rpath/SDWebImage.framework/SDWebImage (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 24
cmd LC_LOAD_DYLIB
cmdsize 80
name /System/Library/Frameworks/Security.framework/Security (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 58286.252.1
compatibility version 1.0.0
Load command 25
cmd LC_LOAD_DYLIB
cmdsize 104
name /System/Library/Frameworks/SystemConfiguration.framework/SystemConfiguration (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 963.250.1
compatibility version 1.0.0
Load command 26
cmd LC_LOAD_DYLIB
cmdsize 60
name @rpath/WMPlayer.framework/WMPlayer (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 27
cmd LC_LOAD_DYLIB
cmdsize 60
name @rpath/YYModel.framework/YYModel (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 28
cmd LC_LOAD_DYLIB
cmdsize 52
name /usr/lib/libiconv.2.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 7.0.0
compatibility version 7.0.0
Load command 29
cmd LC_LOAD_DYLIB
cmdsize 52
name /usr/lib/libbz2.1.0.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.5
compatibility version 1.0.0
Load command 30
cmd LC_LOAD_DYLIB
cmdsize 88
name /System/Library/Frameworks/AVFoundation.framework/AVFoundation (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 2.0.0
compatibility version 1.0.0
Load command 31
cmd LC_LOAD_DYLIB
cmdsize 88
name /System/Library/Frameworks/AudioToolbox.framework/AudioToolbox (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 492.0.0
compatibility version 1.0.0
Load command 32
cmd LC_LOAD_DYLIB
cmdsize 100
name /System/Library/Frameworks/ExternalAccessory.framework/ExternalAccessory (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 33
cmd LC_LOAD_DYLIB
cmdsize 84
name /System/Library/Frameworks/Foundation.framework/Foundation (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1570.15.0
compatibility version 300.0.0
Load command 34
cmd LC_LOAD_DYLIB
cmdsize 52
name /usr/lib/libobjc.A.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 228.0.0
compatibility version 1.0.0
Load command 35
cmd LC_LOAD_DYLIB
cmdsize 52
name /usr/lib/libSystem.B.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1252.250.1
compatibility version 1.0.0
Load command 36
cmd LC_LOAD_DYLIB
cmdsize 84
name /System/Library/Frameworks/Accelerate.framework/Accelerate (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 4.0.0
compatibility version 1.0.0
Load command 37
cmd LC_LOAD_DYLIB
cmdsize 84
name /System/Library/Frameworks/AdSupport.framework/AdSupport (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 38
cmd LC_LOAD_DYLIB
cmdsize 88
name /System/Library/Frameworks/AddressBook.framework/AddressBook (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 39
cmd LC_LOAD_DYLIB
cmdsize 84
name /System/Library/Frameworks/CFNetwork.framework/CFNetwork (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 978.0.7
compatibility version 1.0.0
Load command 40
cmd LC_LOAD_DYLIB
cmdsize 92
name /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1570.15.0
compatibility version 150.0.0
Load command 41
cmd LC_LOAD_DYLIB
cmdsize 88
name /System/Library/Frameworks/CoreGraphics.framework/CoreGraphics (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1251.12.0
compatibility version 64.0.0
Load command 42
cmd LC_LOAD_DYLIB
cmdsize 84
name /System/Library/Frameworks/CoreImage.framework/CoreImage (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 5.0.0
compatibility version 1.0.0
Load command 43
cmd LC_LOAD_DYLIB
cmdsize 84
name /System/Library/Frameworks/CoreMedia.framework/CoreMedia (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 44
cmd LC_LOAD_DYLIB
cmdsize 84
name /System/Library/Frameworks/CoreMotion.framework/CoreMotion (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 2245.12.30
compatibility version 1.0.0
Load command 45
cmd LC_LOAD_DYLIB
cmdsize 92
name /System/Library/Frameworks/CoreTelephony.framework/CoreTelephony (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 0.0.0
compatibility version 1.0.0
Load command 46
cmd LC_LOAD_DYLIB
cmdsize 84
name /System/Library/Frameworks/CoreVideo.framework/CoreVideo (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.5.0
compatibility version 1.2.0
Load command 47
cmd LC_LOAD_DYLIB
cmdsize 80
name /System/Library/Frameworks/ImageIO.framework/ImageIO (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 0.0.0
compatibility version 1.0.0
Load command 48
cmd LC_LOAD_DYLIB
cmdsize 100
name /System/Library/Frameworks/MobileCoreServices.framework/MobileCoreServices (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 943.1.0
compatibility version 1.0.0
Load command 49
cmd LC_LOAD_DYLIB
cmdsize 80
name /System/Library/Frameworks/OpenGLES.framework/OpenGLES (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 50
cmd LC_LOAD_DYLIB
cmdsize 76
name /System/Library/Frameworks/Photos.framework/Photos (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 51
cmd LC_LOAD_DYLIB
cmdsize 84
name /System/Library/Frameworks/QuartzCore.framework/QuartzCore (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.11.0
compatibility version 1.2.0
Load command 52
cmd LC_LOAD_DYLIB
cmdsize 84
name /System/Library/Frameworks/ReplayKit.framework/ReplayKit (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 53
cmd LC_LOAD_DYLIB
cmdsize 76
name /System/Library/Frameworks/UIKit.framework/UIKit (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 61000.0.0
compatibility version 1.0.0
Load command 54
cmd LC_LOAD_WEAK_DYLIB
cmdsize 100
name /System/Library/Frameworks/UserNotifications.framework/UserNotifications (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 55
cmd LC_LOAD_DYLIB
cmdsize 76
name /System/Library/Frameworks/WebKit.framework/WebKit (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 607.1.40
compatibility version 1.0.0
Load command 56
cmd LC_LOAD_DYLIB
cmdsize 60
name @rpath/libswiftAVFoundation.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1001.0.82
compatibility version 1.0.0
Load command 57
cmd LC_LOAD_DYLIB
cmdsize 52
name @rpath/libswiftCore.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1001.0.82
compatibility version 1.0.0
Load command 58
cmd LC_LOAD_DYLIB
cmdsize 56
name @rpath/libswiftCoreAudio.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1001.0.82
compatibility version 1.0.0
Load command 59
cmd LC_LOAD_DYLIB
cmdsize 60
name @rpath/libswiftCoreFoundation.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1001.0.82
compatibility version 1.0.0
Load command 60
cmd LC_LOAD_DYLIB
cmdsize 60
name @rpath/libswiftCoreGraphics.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1001.0.82
compatibility version 1.0.0
Load command 61
cmd LC_LOAD_DYLIB
cmdsize 56
name @rpath/libswiftCoreImage.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1001.0.82
compatibility version 1.0.0
Load command 62
cmd LC_LOAD_DYLIB
cmdsize 56
name @rpath/libswiftCoreMedia.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1001.0.82
compatibility version 1.0.0
Load command 63
cmd LC_LOAD_DYLIB
cmdsize 52
name @rpath/libswiftDarwin.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1001.0.82
compatibility version 1.0.0
Load command 64
cmd LC_LOAD_DYLIB
cmdsize 56
name @rpath/libswiftDispatch.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1001.0.82
compatibility version 1.0.0
Load command 65
cmd LC_LOAD_DYLIB
cmdsize 56
name @rpath/libswiftFoundation.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1001.0.82
compatibility version 1.0.0
Load command 66
cmd LC_LOAD_DYLIB
cmdsize 52
name @rpath/libswiftMetal.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1001.0.82
compatibility version 1.0.0
Load command 67
cmd LC_LOAD_DYLIB
cmdsize 56
name @rpath/libswiftObjectiveC.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1001.0.82
compatibility version 1.0.0
Load command 68
cmd LC_LOAD_DYLIB
cmdsize 56
name @rpath/libswiftQuartzCore.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1001.0.82
compatibility version 1.0.0
Load command 69
cmd LC_LOAD_DYLIB
cmdsize 52
name @rpath/libswiftUIKit.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1001.0.82
compatibility version 1.0.0
Load command 70
cmd LC_LOAD_DYLIB
cmdsize 52
name @rpath/libswiftsimd.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1001.0.82
compatibility version 1.0.0
Load command 71
cmd LC_RPATH
cmdsize 28
path /usr/lib/swift (offset 12)
Load command 72
cmd LC_RPATH
cmdsize 40
path @executable_path/Frameworks (offset 12)
Load command 73
cmd LC_RPATH
cmdsize 36
path @loader_path/Frameworks (offset 12)
Load command 74
cmd LC_RPATH
cmdsize 40
path @executable_path/Frameworks (offset 12)
Load command 75
cmd LC_FUNCTION_STARTS
cmdsize 16
dataoff 13871188
datasize 34140
Load command 76
cmd LC_DATA_IN_CODE
cmdsize 16
dataoff 13905328
datasize 21400
Load command 77
cmd LC_CODE_SIGNATURE
cmdsize 16
dataoff 13987152
datasize 196928
/Users/ebemate/Desktop/Ebemate.app/Ebemate (architecture arm64):
Mach header
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
0xfeedfacf 16777228 0 0x00 2 78 8016 0x00200085
Load command 0
cmd LC_SEGMENT_64
cmdsize 72
segname __PAGEZERO
vmaddr 0x0000000000000000
vmsize 0x0000000100000000
fileoff 0
filesize 0
maxprot 0x00000000
initprot 0x00000000
nsects 0
flags 0x0
Load command 1
cmd LC_SEGMENT_64
cmdsize 1432
segname __TEXT
vmaddr 0x0000000100000000
vmsize 0x0000000000df0000
fileoff 0
filesize 14614528
maxprot 0x00000005
initprot 0x00000005
nsects 17
flags 0x0
Section
sectname __text
segname __TEXT
addr 0x0000000100006f00
size 0x0000000000aee034
offset 28416
align 2^6 (64)
reloff 0
nreloc 0
flags 0x80000400
reserved1 0
reserved2 0
Section
sectname __stubs
segname __TEXT
addr 0x0000000100af4f34
size 0x00000000000021a8
offset 11489076
align 2^2 (4)
reloff 0
nreloc 0
flags 0x80000408
reserved1 0 (index into indirect symbol table)
reserved2 12 (size of stubs)
Section
sectname __stub_helper
segname __TEXT
addr 0x0000000100af70dc
size 0x00000000000021c0
offset 11497692
align 2^2 (4)
reloff 0
nreloc 0
flags 0x80000400
reserved1 0
reserved2 0
Section
sectname __const
segname __TEXT
addr 0x0000000100af92a0
size 0x00000000002146e8
offset 11506336
align 2^5 (32)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __objc_methname
segname __TEXT
addr 0x0000000100d0d988
size 0x0000000000023e19
offset 13687176
align 2^0 (1)
reloff 0
nreloc 0
flags 0x00000002
reserved1 0
reserved2 0
Section
sectname __cstring
segname __TEXT
addr 0x0000000100d317b0
size 0x00000000000a289e
offset 13834160
align 2^4 (16)
reloff 0
nreloc 0
flags 0x00000002
reserved1 0
reserved2 0
Section
sectname __objc_classname
segname __TEXT
addr 0x0000000100dd404e
size 0x0000000000001d00
offset 14499918
align 2^0 (1)
reloff 0
nreloc 0
flags 0x00000002
reserved1 0
reserved2 0
Section
sectname __objc_methtype
segname __TEXT
addr 0x0000000100dd5d4e
size 0x00000000000069aa
offset 14507342
align 2^0 (1)
reloff 0
nreloc 0
flags 0x00000002
reserved1 0
reserved2 0
Section
sectname __gcc_except_tab
segname __TEXT
addr 0x0000000100ddc6f8
size 0x000000000000a6a4
offset 14534392
align 2^2 (4)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __ustring
segname __TEXT
addr 0x0000000100de6d9c
size 0x00000000000011e2
offset 14577052
align 2^1 (2)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __swift5_typeref
segname __TEXT
addr 0x0000000100de7f7e
size 0x0000000000000106
offset 14581630
align 2^1 (2)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __swift5_reflstr
segname __TEXT
addr 0x0000000100de8090
size 0x0000000000000035
offset 14581904
align 2^4 (16)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __swift5_fieldmd
segname __TEXT
addr 0x0000000100de80c8
size 0x0000000000000074
offset 14581960
align 2^2 (4)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __swift5_capture
segname __TEXT
addr 0x0000000100de813c
size 0x0000000000000108
offset 14582076
align 2^2 (4)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __swift5_types
segname __TEXT
addr 0x0000000100de8244
size 0x0000000000000014
offset 14582340
align 2^2 (4)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __unwind_info
segname __TEXT
addr 0x0000000100de8258
size 0x0000000000007b14
offset 14582360
align 2^2 (4)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __eh_frame
segname __TEXT
addr 0x0000000100defd70
size 0x000000000000026c
offset 14613872
align 2^3 (8)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Load command 2
cmd LC_SEGMENT_64
cmdsize 1672
segname __DATA
vmaddr 0x0000000100df0000
vmsize 0x0000000000884000
fileoff 14614528
filesize 1146880
maxprot 0x00000003
initprot 0x00000003
nsects 20
flags 0x0
Section
sectname __got
segname __DATA
addr 0x0000000100df0000
size 0x0000000000000750
offset 14614528
align 2^3 (8)
reloff 0
nreloc 0
flags 0x00000006
reserved1 718 (index into indirect symbol table)
reserved2 0
Section
sectname __la_symbol_ptr
segname __DATA
addr 0x0000000100df0750
size 0x0000000000001670
offset 14616400
align 2^3 (8)
reloff 0
nreloc 0
flags 0x00000007
reserved1 952 (index into indirect symbol table)
reserved2 0
Section
sectname __const
segname __DATA
addr 0x0000000100df1dc0
size 0x00000000000496d0
offset 14622144
align 2^6 (64)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __cfstring
segname __DATA
addr 0x0000000100e3b490
size 0x0000000000014360
offset 14922896
align 2^3 (8)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __objc_classlist
segname __DATA
addr 0x0000000100e4f7f0
size 0x0000000000000bf0
offset 15005680
align 2^3 (8)
reloff 0
nreloc 0
flags 0x10000000
reserved1 0
reserved2 0
Section
sectname __objc_nlclslist
segname __DATA
addr 0x0000000100e503e0
size 0x0000000000000028
offset 15008736
align 2^3 (8)
reloff 0
nreloc 0
flags 0x10000000
reserved1 0
reserved2 0
Section
sectname __objc_catlist
segname __DATA
addr 0x0000000100e50408
size 0x00000000000000c0
offset 15008776
align 2^3 (8)
reloff 0
nreloc 0
flags 0x10000000
reserved1 0
reserved2 0
Section
sectname __objc_nlcatlist
segname __DATA
addr 0x0000000100e504c8
size 0x0000000000000010
offset 15008968
align 2^3 (8)
reloff 0
nreloc 0
flags 0x10000000
reserved1 0
reserved2 0
Section
sectname __objc_protolist
segname __DATA
addr 0x0000000100e504d8
size 0x0000000000000210
offset 15008984
align 2^3 (8)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __objc_imageinfo
segname __DATA
addr 0x0000000100e506e8
size 0x0000000000000008
offset 15009512
align 2^2 (4)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __objc_const
segname __DATA
addr 0x0000000100e506f0
size 0x000000000006c418
offset 15009520
align 2^3 (8)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __objc_selrefs
segname __DATA
addr 0x0000000100ebcb08
size 0x00000000000090d8
offset 15452936
align 2^3 (8)
reloff 0
nreloc 0
flags 0x10000005
reserved1 0
reserved2 0
Section
sectname __objc_protorefs
segname __DATA
addr 0x0000000100ec5be0
size 0x0000000000000070
offset 15490016
align 2^3 (8)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __objc_classrefs
segname __DATA
addr 0x0000000100ec5c50
size 0x0000000000001050
offset 15490128
align 2^3 (8)
reloff 0
nreloc 0
flags 0x10000000
reserved1 0
reserved2 0
Section
sectname __objc_superrefs
segname __DATA
addr 0x0000000100ec6ca0
size 0x00000000000008e8
offset 15494304
align 2^3 (8)
reloff 0
nreloc 0
flags 0x10000000
reserved1 0
reserved2 0
Section
sectname __objc_ivar
segname __DATA
addr 0x0000000100ec7588
size 0x0000000000001c64
offset 15496584
align 2^2 (4)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __objc_data
segname __DATA
addr 0x0000000100ec91f0
size 0x00000000000078b8
offset 15503856
align 2^3 (8)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __data
segname __DATA
addr 0x0000000100ed0ac0
size 0x0000000000033f40
offset 15534784
align 2^5 (32)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __bss
segname __DATA
addr 0x0000000100f04a00
size 0x0000000000604050
offset 0
align 2^5 (32)
reloff 0
nreloc 0
flags 0x00000001
reserved1 0
reserved2 0
Section
sectname __common
segname __DATA
addr 0x0000000101510000
size 0x0000000000162b78
offset 0
align 2^15 (32768)
reloff 0
nreloc 0
flags 0x00000001
reserved1 0
reserved2 0
Load command 3
cmd LC_SEGMENT_64
cmdsize 72
segname __LINKEDIT
vmaddr 0x0000000101674000
vmsize 0x0000000000084000
fileoff 15777792
filesize 539392
maxprot 0x00000001
initprot 0x00000001
nsects 0
flags 0x0
Load command 4
cmd LC_DYLD_INFO_ONLY
cmdsize 48
rebase_off 15777792
rebase_size 35016
bind_off 15812808
bind_size 17136
weak_bind_off 0
weak_bind_size 0
lazy_bind_off 15829944
lazy_bind_size 19784
export_off 15849728
export_size 157056
Load command 5
cmd LC_SYMTAB
cmdsize 24
symoff 16041856
nsyms 1161
stroff 16067112
strsize 26352
Load command 6
cmd LC_DYSYMTAB
cmdsize 80
ilocalsym 0
nlocalsym 1
iextdefsym 1
nextdefsym 1
iundefsym 2
nundefsym 1159
tocoff 0
ntoc 0
modtaboff 0
nmodtab 0
extrefsymoff 0
nextrefsyms 0
indirectsymoff 16060432
nindirectsyms 1670
extreloff 0
nextrel 0
locreloff 0
nlocrel 0
Load command 7
cmd LC_LOAD_DYLINKER
cmdsize 32
name /usr/lib/dyld (offset 12)
Load command 8
cmd LC_UUID
cmdsize 24
uuid EDD8343D-145D-347E-9DB5-C70C3A393CAF
Load command 9
cmd LC_VERSION_MIN_IPHONEOS
cmdsize 16
version 9.0
sdk 12.2
Load command 10
cmd LC_SOURCE_VERSION
cmdsize 16
version 0.0
Load command 11
cmd LC_MAIN
cmdsize 24
entryoff 421208
stacksize 0
Load command 12
cmd LC_ENCRYPTION_INFO_64
cmdsize 24
cryptoff 16384
cryptsize 14598144
cryptid 0
pad 0
Load command 13
cmd LC_LOAD_DYLIB
cmdsize 48
name /usr/lib/libc++.1.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 400.9.4
compatibility version 1.0.0
Load command 14
cmd LC_LOAD_DYLIB
cmdsize 48
name /usr/lib/libz.1.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.2.11
compatibility version 1.0.0
Load command 15
cmd LC_LOAD_DYLIB
cmdsize 72
name @rpath/AFNetworking.framework/AFNetworking (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 16
cmd LC_LOAD_DYLIB
cmdsize 80
name @rpath/CocoaAsyncSocket.framework/CocoaAsyncSocket (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 17
cmd LC_LOAD_DYLIB
cmdsize 56
name @rpath/FMDB.framework/FMDB (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 18
cmd LC_LOAD_DYLIB
cmdsize 80
name @rpath/IQKeyboardManager.framework/IQKeyboardManager (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 19
cmd LC_LOAD_WEAK_DYLIB
cmdsize 96
name /System/Library/Frameworks/JavaScriptCore.framework/JavaScriptCore (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 607.1.40
compatibility version 1.0.0
Load command 20
cmd LC_LOAD_DYLIB
cmdsize 72
name @rpath/MBProgressHUD.framework/MBProgressHUD (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 21
cmd LC_LOAD_DYLIB
cmdsize 64
name @rpath/MJRefresh.framework/MJRefresh (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 22
cmd LC_LOAD_DYLIB
cmdsize 64
name @rpath/Masonry.framework/Masonry (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 23
cmd LC_LOAD_DYLIB
cmdsize 64
name @rpath/SDWebImage.framework/SDWebImage (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 24
cmd LC_LOAD_DYLIB
cmdsize 80
name /System/Library/Frameworks/Security.framework/Security (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 58286.252.1
compatibility version 1.0.0
Load command 25
cmd LC_LOAD_DYLIB
cmdsize 104
name /System/Library/Frameworks/SystemConfiguration.framework/SystemConfiguration (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 963.250.1
compatibility version 1.0.0
Load command 26
cmd LC_LOAD_DYLIB
cmdsize 64
name @rpath/WMPlayer.framework/WMPlayer (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 27
cmd LC_LOAD_DYLIB
cmdsize 64
name @rpath/YYModel.framework/YYModel (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 28
cmd LC_LOAD_DYLIB
cmdsize 56
name /usr/lib/libiconv.2.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 7.0.0
compatibility version 7.0.0
Load command 29
cmd LC_LOAD_DYLIB
cmdsize 56
name /usr/lib/libbz2.1.0.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.5
compatibility version 1.0.0
Load command 30
cmd LC_LOAD_DYLIB
cmdsize 88
name /System/Library/Frameworks/AVFoundation.framework/AVFoundation (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 2.0.0
compatibility version 1.0.0
Load command 31
cmd LC_LOAD_DYLIB
cmdsize 88
name /System/Library/Frameworks/AudioToolbox.framework/AudioToolbox (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 492.0.0
compatibility version 1.0.0
Load command 32
cmd LC_LOAD_DYLIB
cmdsize 104
name /System/Library/Frameworks/ExternalAccessory.framework/ExternalAccessory (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 33
cmd LC_LOAD_DYLIB
cmdsize 88
name /System/Library/Frameworks/Foundation.framework/Foundation (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1570.15.0
compatibility version 300.0.0
Load command 34
cmd LC_LOAD_DYLIB
cmdsize 56
name /usr/lib/libobjc.A.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 228.0.0
compatibility version 1.0.0
Load command 35
cmd LC_LOAD_DYLIB
cmdsize 56
name /usr/lib/libSystem.B.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1252.250.1
compatibility version 1.0.0
Load command 36
cmd LC_LOAD_DYLIB
cmdsize 88
name /System/Library/Frameworks/Accelerate.framework/Accelerate (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 4.0.0
compatibility version 1.0.0
Load command 37
cmd LC_LOAD_DYLIB
cmdsize 88
name /System/Library/Frameworks/AdSupport.framework/AdSupport (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 38
cmd LC_LOAD_DYLIB
cmdsize 88
name /System/Library/Frameworks/AddressBook.framework/AddressBook (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 39
cmd LC_LOAD_DYLIB
cmdsize 88
name /System/Library/Frameworks/CFNetwork.framework/CFNetwork (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 978.0.7
compatibility version 1.0.0
Load command 40
cmd LC_LOAD_DYLIB
cmdsize 96
name /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1570.15.0
compatibility version 150.0.0
Load command 41
cmd LC_LOAD_DYLIB
cmdsize 88
name /System/Library/Frameworks/CoreGraphics.framework/CoreGraphics (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1251.12.0
compatibility version 64.0.0
Load command 42
cmd LC_LOAD_DYLIB
cmdsize 88
name /System/Library/Frameworks/CoreImage.framework/CoreImage (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 5.0.0
compatibility version 1.0.0
Load command 43
cmd LC_LOAD_DYLIB
cmdsize 88
name /System/Library/Frameworks/CoreMedia.framework/CoreMedia (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 44
cmd LC_LOAD_DYLIB
cmdsize 88
name /System/Library/Frameworks/CoreMotion.framework/CoreMotion (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 2245.12.30
compatibility version 1.0.0
Load command 45
cmd LC_LOAD_DYLIB
cmdsize 96
name /System/Library/Frameworks/CoreTelephony.framework/CoreTelephony (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 0.0.0
compatibility version 1.0.0
Load command 46
cmd LC_LOAD_DYLIB
cmdsize 88
name /System/Library/Frameworks/CoreVideo.framework/CoreVideo (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.5.0
compatibility version 1.2.0
Load command 47
cmd LC_LOAD_DYLIB
cmdsize 80
name /System/Library/Frameworks/ImageIO.framework/ImageIO (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 0.0.0
compatibility version 1.0.0
Load command 48
cmd LC_LOAD_DYLIB
cmdsize 104
name /System/Library/Frameworks/MobileCoreServices.framework/MobileCoreServices (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 943.1.0
compatibility version 1.0.0
Load command 49
cmd LC_LOAD_DYLIB
cmdsize 80
name /System/Library/Frameworks/OpenGLES.framework/OpenGLES (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 50
cmd LC_LOAD_DYLIB
cmdsize 80
name /System/Library/Frameworks/Photos.framework/Photos (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 51
cmd LC_LOAD_DYLIB
cmdsize 88
name /System/Library/Frameworks/QuartzCore.framework/QuartzCore (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.11.0
compatibility version 1.2.0
Load command 52
cmd LC_LOAD_DYLIB
cmdsize 88
name /System/Library/Frameworks/ReplayKit.framework/ReplayKit (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 53
cmd LC_LOAD_DYLIB
cmdsize 80
name /System/Library/Frameworks/UIKit.framework/UIKit (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 61000.0.0
compatibility version 1.0.0
Load command 54
cmd LC_LOAD_WEAK_DYLIB
cmdsize 104
name /System/Library/Frameworks/UserNotifications.framework/UserNotifications (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 55
cmd LC_LOAD_DYLIB
cmdsize 80
name /System/Library/Frameworks/WebKit.framework/WebKit (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 607.1.40
compatibility version 1.0.0
Load command 56
cmd LC_LOAD_DYLIB
cmdsize 64
name @rpath/libswiftAVFoundation.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1001.0.82
compatibility version 1.0.0
Load command 57
cmd LC_LOAD_DYLIB
cmdsize 56
name @rpath/libswiftCore.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1001.0.82
compatibility version 1.0.0
Load command 58
cmd LC_LOAD_DYLIB
cmdsize 56
name @rpath/libswiftCoreAudio.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1001.0.82
compatibility version 1.0.0
Load command 59
cmd LC_LOAD_DYLIB
cmdsize 64
name @rpath/libswiftCoreFoundation.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1001.0.82
compatibility version 1.0.0
Load command 60
cmd LC_LOAD_DYLIB
cmdsize 64
name @rpath/libswiftCoreGraphics.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1001.0.82
compatibility version 1.0.0
Load command 61
cmd LC_LOAD_DYLIB
cmdsize 56
name @rpath/libswiftCoreImage.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1001.0.82
compatibility version 1.0.0
Load command 62
cmd LC_LOAD_DYLIB
cmdsize 56
name @rpath/libswiftCoreMedia.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1001.0.82
compatibility version 1.0.0
Load command 63
cmd LC_LOAD_DYLIB
cmdsize 56
name @rpath/libswiftDarwin.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1001.0.82
compatibility version 1.0.0
Load command 64
cmd LC_LOAD_DYLIB
cmdsize 56
name @rpath/libswiftDispatch.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1001.0.82
compatibility version 1.0.0
Load command 65
cmd LC_LOAD_DYLIB
cmdsize 56
name @rpath/libswiftFoundation.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1001.0.82
compatibility version 1.0.0
Load command 66
cmd LC_LOAD_DYLIB
cmdsize 56
name @rpath/libswiftMetal.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1001.0.82
compatibility version 1.0.0
Load command 67
cmd LC_LOAD_DYLIB
cmdsize 56
name @rpath/libswiftObjectiveC.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1001.0.82
compatibility version 1.0.0
Load command 68
cmd LC_LOAD_DYLIB
cmdsize 56
name @rpath/libswiftQuartzCore.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1001.0.82
compatibility version 1.0.0
Load command 69
cmd LC_LOAD_DYLIB
cmdsize 56
name @rpath/libswiftUIKit.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1001.0.82
compatibility version 1.0.0
Load command 70
cmd LC_LOAD_DYLIB
cmdsize 56
name @rpath/libswiftsimd.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1001.0.82
compatibility version 1.0.0
Load command 71
cmd LC_RPATH
cmdsize 32
path /usr/lib/swift (offset 12)
Load command 72
cmd LC_RPATH
cmdsize 40
path @executable_path/Frameworks (offset 12)
Load command 73
cmd LC_RPATH
cmdsize 40
path @loader_path/Frameworks (offset 12)
Load command 74
cmd LC_RPATH
cmdsize 40
path @executable_path/Frameworks (offset 12)
Load command 75
cmd LC_FUNCTION_STARTS
cmdsize 16
dataoff 16006784
datasize 34472
Load command 76
cmd LC_DATA_IN_CODE
cmdsize 16
dataoff 16041256
datasize 600
Load command 77
cmd LC_CODE_SIGNATURE
cmdsize 16
dataoff 16093472
datasize 223712
通过以上打印出来的全部信息,你可以从中找出:
architecture armv7架构下的UUID为:719E05C5-2AEF-3DF3-952B-88570128A8CA
architecture arm64架构下的UUID为:EDD8343D-145D-347E-9DB5-C70C3A393CAF
所以经此你就可以匹配找到你需要的.app文件的UUID了。
最后,我们来看看.crash文件里面的UUID怎么查看,这个是最简单的,所以我们留到了最后说明:
这个你可以直接打开.crash文件,一直拉到最后,找到可执行文件这里,如下图:
43655932-A86A-444E-985E-974BDE7B7005.png
红色箭头指示的这里就是.crash文件中的UUID:67f552f6beb33467a1f309a4754ebc4d
至此,如果三个文件的UUID都是一致的,就说明可以进行.crash文件的符号化。
接着UUID一致,我们来进行符号化:
符号化有两种方法
(1)通过XCode自动符号化Crash文件
如果本地存在.crash对应的.dSYM文件,把文件拖入右边的logs列表,Xcode会自动去符号化文件,如果满眼都是16进制数字的化,点击Re-Symbolicate Log即可。如下图:
可以看到右侧部分已经显示为我们可以看得懂的方法名了,然后就可以找到奔溃所在的地方进行修改了。
针对我个人来说,我比较喜欢用第二种方法进行符号化
(2)通过命令行工具symbolicatecrash符号化
首先:先执行一下命令:
先cd 到xcode目录下,如下:
ebematedeMac-mini:Resources ebemate$ cd /Applications/Xcode.app
然后回车之后,在输入命令:find ./ -name symbolicatecrash -type f
ebematedeMac-mini:Xcode.app ebemate$ find ./ -name symbolicatecrash -type f
回车之后你就可以看见以下内容:
ebematedeMac-mini:Xcode.app ebemate$ find ./ -name symbolicatecrash -type f
.//Contents/Developer/Platforms/WatchSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash
.//Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash
.//Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash
.//Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
可以看到,终端窗口输出了四条路径:
从中可以看出,这条路径是适合于iWatch的:.//Contents/Developer/Platforms/WatchSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash
这条是适合AppleTV的:.//Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash
这条是适合iPhone模拟器的:.//Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash
那么最后一条路径就是我们需要的:
.//Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
拿到这条路径之后,我们继续往下走:
如果你不想用Xcode去符号化,你也可以通过symbolicatecrash来手动符号化crash日志,因为symbolicatecrash是Xcode下的一个工具
,所以我们需要拿到刚才的路径,然后继续往下:
继续执行以下命令:
cd/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources
cd/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources
注意:cd命令是到一个目录之下,所以这里写的时候,不要写错了,写成一个路径了。
cd结束之后,你可以输入以下指令,查看symbolicatecrash是否已经存在了。
输入: ls -l
ebematedeMac-mini:Resources ebemate$ ls -l
运行完之后,你就可以看见如下所示:
ebematedeMac-mini:Resources ebemate$ ls -l
total 160
-rw-r--r-- 1 root wheel 3737 4 5 11:05 ARMAsm.xclangspec
-rw-r--r-- 1 root wheel 19701 4 5 11:05 AppleScript.xclangspec
-rw-r--r-- 1 root wheel 1062 4 5 11:05 AppleWWDRCA.cer
-rw-r--r-- 1 root wheel 4525 4 5 11:05 BaseSupport.xclangspec
-rw-r--r-- 1 root wheel 10564 4 5 11:05 Built-in Syntax Types.xcsynspec
-rw-r--r-- 1 root wheel 27741 4 5 11:05 C++.xclangspec
-rw-r--r-- 1 root wheel 37417 4 5 11:05 C.xclangspec
-rw-r--r-- 1 root wheel 2838 4 5 11:05 CLIPS.xclangspec
-rw-r--r-- 1 root wheel 45765 4 5 11:05 CSS.xclangspec
-rw-r--r-- 1 root wheel 10349 4 5 11:05 DTrace.xclangspec
-rw-r--r-- 1 root wheel 658 4 5 11:05 DVTDiffContextDefaults.plist
-rw-r--r-- 1 root wheel 51154 4 5 11:05 DVTFoundation.xcplugindata
-rw-r--r-- 1 root wheel 1032 4 5 11:05 DeveloperIDCA.cer
drwxr-xr-x 6 root wheel 192 4 5 11:05 English.lproj
-rw-r--r-- 1 root wheel 6442 4 5 11:05 Fortran.xclangspec
-rw-r--r-- 1 root wheel 19935 4 5 11:05 GLSL.xclangspec
-rw-r--r-- 1 root wheel 751 4 5 11:17 Info.plist
-rw-r--r-- 1 root wheel 2616 4 5 11:05 IntelAsm.xclangspec
-rw-r--r-- 1 root wheel 15700 4 5 11:05 Java.xclangspec
-rw-r--r-- 1 root wheel 6113 4 5 11:05 JavaScript.xclangspec
-rw-r--r-- 1 root wheel 885 4 5 11:05 LibrariesExemptedFromTriage.plist
-rw-r--r-- 1 root wheel 4254 4 5 11:05 Make.xclangspec
-rw-r--r-- 1 root wheel 4243 4 5 11:05 Markdown.xclangspec
-rw-r--r-- 1 root wheel 35168 4 5 11:05 Metal.xclangspec
-rw-r--r-- 1 root wheel 2669 4 5 11:05 ModuleMap.xclangspec
-rw-r--r-- 1 root wheel 65615 4 5 11:05 ObjectiveC++.xclangspec
-rw-r--r-- 1 root wheel 48705 4 5 11:05 ObjectiveC.xclangspec
-rw-r--r-- 1 root wheel 19791 4 5 11:05 OpenCL.xclangspec
-rw-r--r-- 1 root wheel 5366 4 5 11:05 PHP.xclangspec
-rw-r--r-- 1 root wheel 9402 4 5 11:05 Perl.xclangspec
-rw-r--r-- 1 root wheel 15428 4 5 11:05 Protobuf.xclangspec
-rw-r--r-- 1 root wheel 9661 4 5 11:05 Python.xclangspec
-rw-r--r-- 1 root wheel 16838 4 5 11:05 Ruby.xclangspec
-rw-r--r-- 1 root wheel 2868 4 5 11:05 SymbolSubstringsExemptedFromTriage.plist
-rw-r--r-- 1 root wheel 540 4 5 11:05 SymbolsExemptedFromTriage.plist
-rw-r--r-- 1 root wheel 3212 4 5 11:05 TextBasedDylibSource.xclangspec
-rw-r--r-- 1 root wheel 9616 4 5 11:05 XML.xclangspec
-rw-r--r-- 1 root wheel 2666 4 5 11:05 csh.xclangspec
-rw-r--r-- 1 root wheel 7848 4 5 11:05 html.xclangspec
-rw-r--r-- 1 root wheel 1934 4 5 11:05 json.xclangspec
-rw-r--r-- 1 root wheel 10672 4 5 11:05 llvm.xclangspec
-rw-r--r-- 1 root wheel 2651 4 5 11:05 man.xclangspec
-rw-r--r-- 1 root wheel 2180 4 5 11:05 plist.xclangspec
-rw-r--r-- 1 root wheel 2401 4 5 11:05 regex.xclangspec
-rw-r--r-- 1 root wheel 3085 4 5 11:05 sh.xclangspec
-rwxr-xr-x 4 root wheel 53969 4 5 10:06 symbolicatecrash
-rw-r--r-- 1 root wheel 527 4 5 11:17 version.plist
-rw-r--r-- 1 root wheel 814 4 5 11:05 xcconfig.xclangspec
-rw-r--r-- 1 root wheel 4615 4 5 11:05 xclangspec.xclangspec
在这里你就会发现,倒数第四个是:symbolicatecrash。所以他已经存在了。
另外,你也可以,右击仿达,再点击前往文件夹,之后输入:
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/
前往之后,你就可以看见如下:
WeChatbf939f0111e77d4307a90db9ce59b560.png
symbolicatecrash文件已经存在。
cd 只是为了调用symbolicatecrash 不用写全路径,这样方便一点而已,如果你不想进行前面的cd操作,你也可以输入以下文件路径前往查看是否存:/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
OK,继续往下。准备好前面的大量工作,就可以正式进行.crash文件的符号化了。
由于简书字数限制,具体的符号化过程,将在下篇文章中进行详细的讲解!
请看下篇:iOS Crash Log以及符号化详解(2)
网友评论