美文网首页
iOS Crash Log以及符号化详解(1)

iOS Crash Log以及符号化详解(1)

作者: 在路上浅谈管理 | 来源:发表于2019-09-18 08:59 被阅读0次

软件的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文件

如果在线下测试中,出现了软件Crash的情况
USB连接设备,接着在XCode菜单栏依次选择:Window -> Devices And Simulators,接着选择View Device Logs
1.连接真机
2.找到Xcode --> Window --> Devices

image.png

然后,等待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 三个文件准备完毕,符号化开始
首先可以把三个文件都拉到桌面上,方便使用:如下图:

94DB9E8A-7AC1-49EA-AF39-1DB698B3D99B.png

符号化之前,首先得确保这三个文件里面的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即可。如下图:

image

可以看到右侧部分已经显示为我们可以看得懂的方法名了,然后就可以找到奔溃所在的地方进行修改了。

针对我个人来说,我比较喜欢用第二种方法进行符号化

(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)

相关文章

网友评论

      本文标题:iOS Crash Log以及符号化详解(1)

      本文链接:https://www.haomeiwen.com/subject/zmjmectx.html