概述
基本操作:
1、电脑安装好Xcode,连接好手机设备
2、打开Xcode,点击Window-Devices and Simulators
3、选中手机设备,点击View Device Logs,即可查看手机crash日志
Incident Identifier: F04CE61A-F2E4-4AC8-8293-5AE959DE1842
CrashReporter Key:
29d37eab6d7de1b3f24295a26734d0c45dacdb9c
Hardware Model:
iPhone9,1
Process:
MyCamera [1899]
Path:
/private/var/containers/Bundle/Application/33958860-F333-4713-853A-E4E359FC4DA2/MyCamera.app/MyCamera
Identifier:
com.ios.devetest
Version:
1 (1.0)
Code Type:
ARM-64 (Native)
Role:
Foreground
Parent Process:
launchd [1]
Coalition:
com.ios.devetest [1803]
Date/Time:
2019-03-30 15:26:19.5775 +0800
Launch Time:
2019-03-30 15:26:11.1932 +0800
OS Version:
iPhone OS 11.3.1 (15E302)
Baseband Version:
3.66.00
Report Version:
104
Exception Type:
EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001, 0x0000000104198b8c
Termination Signal: Trace/BPT trap: 5
Termination Reason: Namespace SIGNAL, Code 0x5
Terminating Process: exc handler [0]
Triggered by Thread:
0
Filtered syslog:
None found
Thread 0 name:
Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0
libswiftCore.dylib
0x0000000104198b8c 0x103fa8000 + 2034572
1
libswiftCore.dylib
0x0000000104198b8c 0x103fa8000 + 2034572
2
libswiftCore.dylib
0x0000000104001fc0 0x103fa8000 + 368576
3
MyCamera
0x00000001031113d4 0x102eb8000 + 2462676
接下来长长姿势。。。。
首先要知道一点,之所以在View Device Logs面板可以看到crash日志,主要的功臣就是一个叫symbolicatecrash的可执行文件。集成在Xcode中的symbolicatecrash有点类似于集成在Android Studio中的adb工具包一样,并且两者都是可以单独拿出来使用的。
首先,找到symbolicatecrash文件的位置:find /Applications/Xcode.app -name symbolicatecrash -type f
/Applications/Xcode.app/Contents/Developer/Platforms/WatchSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash
/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
这里我用的是手机真机,所以使用的是最后一个,可以把它拷贝出来。
这里有个问题,我们打印出来的crash日志里面,有代码的函数名,但有些却只有函数地址。
0
libswiftCore.dylib
0x0000000104198b8c 0x103fa8000 + 2034572
1
libswiftCore.dylib
0x0000000104198b8c 0x103fa8000 + 2034572
2
libswiftCore.dylib
0x0000000104001fc0 0x103fa8000 + 368576
原因就在于我安装到手机上的app并不是由我当前这台电脑编译打包出来的,没有**.app和**.app.dSYM两个文件,所以根本没有办法把地址同步解析出来。
处理方法:
1、在桌面创建一个Crash文件夹,然后去编译打包的机器上打开Xcode-Window-Organizer,在Archives找到App,右键Show in Finder
2、复制**.app和**.app.dSYM到Crash文件夹
3、把前面找到的symbolicatecrash文件以及待解析的MyApp.crash文件也一并复制到Crash目录下
4、执行命令:./symbolicatecrash MyApp.crash **.app.dSYM > MyApp_symbol.crash
如果解析成功了,就会有函数名了,像下面这样
Thread 0 Crashed:
0
libobjc.A.dylib
0x300c87ec objc_msgSend + 20
1
MobileLines
0x00006434 -[BoardView setSelectedPiece:] (BoardView.m:321)
2
MobileLines
0x000064c2 -[BoardView touchesBegan:withEvent:] (BoardView.m:349)
3
UIKit
0x30a740ac -[UIWindow sendEvent:] + 264
4
UIKit
0x30a66110 -[UIApplication sendEvent:] + 248
假如查看crash log中的崩溃线程是这样的:
Thread 0 Crashed:
0
libobjc.A.dylib
0x00003ec0 objc_msgSend + 24
1
MyApp
0x000036d2 0×1000 + 9938
我们得到了用户发生崩溃情况的内存地址:0x000036d2
然后回到我们应用程序的build目录,目录下一定要包含**.app和**.app.dSYM两个文件。在控制台使用dwarfdump命令,就能解析出内存地址,如:
dwarfdump –lookup 0x000036d2 –arch armv6 MyApp.app.dSYM
转载于:https://www.cnblogs.com/mgzc-1508873480/p/10628195.html
最后
以上就是单纯奇异果为你收集整理的查看iOS应用crash日志的全部内容,希望文章能够帮你解决查看iOS应用crash日志所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复