苹果官方 Crash文件分析方法 (iOS系统Crash文件分析方法)
对于提交的苹果官方的app,在审核的时候会给我们一些crash文件,对于这些有用的文件,里面是关于我们的bug的一些信息,那么该如何去调试呢
第一步:在任意目录创建一个目录,用来调试crash,我这里创建一个crash目录
第二步:将之前Archive的文件copy到crash目录里面
其中包括两个文件.app和.app.dSYM
如果找不到的话可以按照下面的步骤进行
先到Organizer
1,找到提交那个时刻的Archive文件,选中,show in Finder
2,然后到达这里,然后再选中红色区域,会出现3中所示的提示
3,ok显示包内容,然后自己找找吧,肯定会有的
copy就好了
第三步:将symbolicatecrash工具copy到crash目录
找不到这个文件可以去
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources
这里看看,应该就会有了。
第四步:将要调试的crash文件copy到crash目录
这个crash文件,这里是来自苹果官方的,其实有时候也是来自其他的用户的电脑上的。
第五步:通过命令进行测试
打开终端,转到crash目录
执行如下命令:
./symbolicatecrash ./2013-08-16-035933_DLiPad.crash ./appname.app.dSYM > symbol.crash
cat ./symbol.crash
结果如下:
Incident Identifier: 5434D911-E207-4D79-9139-40EA4EA76B45
CrashReporter Key: d11ed3a4adbb0d9ca4d6016e73e439640f95f289
Hardware Model: xxx
Process: appname [8158]
Path: /var/mobile/Applications/2AB1E8EB-6ECE-44F4-8195-4042339DD359/appname.app/appname
Identifier: appname
Version: ??? (???)
Code Type: ARM (Native)
Parent Process: launchd [1] Date/Time: 2013-08-16 03:59:33.513 +0800
OS Version: iOS 6.1.3 (10B329)
Report Version: 104 Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Crashed Thread: 0 Last Exception Backtrace:
0 CoreFoundation 0x3126029e 0x3119e000 + 795294
1 libobjc.A.dylib 0x3910497a 0x390fc000 + 35194
2 UIKit 0x333f537c 0x33065000 + 3736444
3 UIKit 0x3323758e 0x33065000 + 1910158
4 UIKit 0x330c079c 0x33065000 + 374684
5 UIKit 0x33068c34 0x33065000 + 15412
6 UIKit 0x330686c8 0x33065000 + 14024
7 UIKit 0x33068116 0x33065000 + 12566
8 GraphicsServices 0x34d5c59e 0x34d56000 + 26014
9 GraphicsServices 0x34d5c1ce 0x34d56000 + 25038
10 CoreFoundation 0x3123516e 0x3119e000 + 618862
11 CoreFoundation 0x31235112 0x3119e000 + 618770
12 CoreFoundation 0x31233f94 0x3119e000 + 614292
13 CoreFoundation 0x311a6eb8 0x3119e000 + 36536
14 CoreFoundation 0x311a6d44 0x3119e000 + 36164
15 UIKit 0x330bf480 0x33065000 + 369792
16 UIKit 0x330bc2fc 0x33065000 + 357116
17 appname 0x000cf358 0xce000 + 4952
18 libdyld.dylib 0x3953bb1c 0x3953a000 + 6940 Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x39602350 __pthread_kill + 8
1 libsystem_c.dylib 0x3957911e pthread_kill + 54
2 libsystem_c.dylib 0x395b596e abort + 90
3 libc++abi.dylib 0x38b53d4a abort_message + 70
4 libc++abi.dylib 0x38b50ff4 default_terminate() + 20
5 libobjc.A.dylib 0x39104a74 _objc_terminate() + 144
6 libc++abi.dylib 0x38b51078 safe_handler_caller(void (*)()) + 76
7 libc++abi.dylib 0x38b51110 std::terminate() + 16
8 libc++abi.dylib 0x38b52594 __cxa_rethrow + 84
9 libobjc.A.dylib 0x391049cc objc_exception_rethrow + 8
10 CoreFoundation 0x311a6f1c CFRunLoopRunSpecific + 452
11 CoreFoundation 0x311a6d44 CFRunLoopRunInMode + 100
12 UIKit 0x330bf480 -[UIApplication _run] + 664
13 UIKit 0x330bc2fc UIApplicationMain + 1116
14 appname 0x000cf358 0xce000 + 4952
15 libdyld.dylib 0x3953bb1c start + 0 Thread 1:
0 libsystem_kernel.dylib 0x39602d98 __workq_kernreturn + 8
1 libsystem_c.dylib 0x39550cf6 _pthread_workq_return + 14
2 libsystem_c.dylib 0x39550a12 _pthread_wqthread + 362
3 libsystem_c.dylib 0x395508a0 start_wqthread + 4 Thread 2 name: Dispatch queue: com.apple.libdispatch-manager
Thread 2:
0 libsystem_kernel.dylib 0x395f2648 kevent64 + 24
1 libdispatch.dylib 0x39522974 _dispatch_mgr_invoke + 792
2 libdispatch.dylib 0x39522654 _dispatch_mgr_thread$VARIANT$mp + 32 Thread 3:
0 libsystem_kernel.dylib 0x39602d98 __workq_kernreturn + 8
1 libsystem_c.dylib 0x39550cf6 _pthread_workq_return + 14
2 libsystem_c.dylib 0x39550a12 _pthread_wqthread + 362
3 libsystem_c.dylib 0x395508a0 start_wqthread + 4 Thread 4 name: WebThread
Thread 4:
0 libsystem_kernel.dylib 0x395f1eb4 mach_msg_trap + 20
1 libsystem_kernel.dylib 0x395f2048 mach_msg + 36
2 CoreFoundation 0x31235040 __CFRunLoopServiceMachPort + 124
3 CoreFoundation 0x31233d9e __CFRunLoopRun + 878
4 CoreFoundation 0x311a6eb8 CFRunLoopRunSpecific + 352
5 CoreFoundation 0x311a6d44 CFRunLoopRunInMode + 100
6 WebCore 0x37196500 RunWebThread(void*) + 440
7 libsystem_c.dylib 0x3955b30e _pthread_start + 306
8 libsystem_c.dylib 0x3955b1d4 thread_start + 4 Thread 0 crashed with ARM Thread State (32-bit):
r0: 0x00000000 r1: 0x00000000 r2: 0x00000000 r3: 0x3b0f8534
r4: 0x00000006 r5: 0x3b0f8b88 r6: 0x1d844f24 r7: 0x2fd329f4
r8: 0x1d844f00 r9: 0x00000300 r10: 0x334de04b r11: 0x1c535350
ip: 0x00000148 sp: 0x2fd329e8 lr: 0x39579123 pc: 0x39602350
cpsr: 0x00000010
......
再执行如下命令:
dwarfdump --lookup 0x000cf358 --arch armv7 appname.app.dSYM/
关键是在这里 0x000cf358 ,他是来自这里的
0 libsystem_kernel.dylib 0x39602350 __pthread_kill + 8
1 libsystem_c.dylib 0x3957911e pthread_kill + 54
2 libsystem_c.dylib 0x395b596e abort + 90
3 libc++abi.dylib 0x38b53d4a abort_message + 70
4 libc++abi.dylib 0x38b50ff4 default_terminate() + 20
5 libobjc.A.dylib 0x39104a74 _objc_terminate() + 144
6 libc++abi.dylib 0x38b51078 safe_handler_caller(void (*)()) + 76
7 libc++abi.dylib 0x38b51110 std::terminate() + 16
8 libc++abi.dylib 0x38b52594 __cxa_rethrow + 84
9 libobjc.A.dylib 0x391049cc objc_exception_rethrow + 8
10 CoreFoundation 0x311a6f1c CFRunLoopRunSpecific + 452
11 CoreFoundation 0x311a6d44 CFRunLoopRunInMode + 100
12 UIKit 0x330bf480 -[UIApplication _run] + 664
13 UIKit 0x330bc2fc UIApplicationMain + 1116
14 应用的名称 0x000cf358 0xce000 + 4952
15 libdyld.dylib 0x3953bb1c start + 0
结果如下:
----------------------------------------------------------------------
File: appname.app.dSYM/Contents/Resources/DWARF/appname (armv7)
----------------------------------------------------------------------
Looking up address: 0x00000000000cf358 in .debug_info... found! 0x0015d390:
Compile Unit: length = 0x00001fc6 version = 0x0002 abbr_offset =
0x00000000 addr_size = 0x04 (next CU at 0x0015f35a) 0x0015d39b: TAG_compile_unit [1] *
AT_producer( "Apple LLVM version 4.2 (clang-425.0.24) (based on LLVM 3.2svn)" )
AT_language( DW_LANG_ObjC )
AT_name( "/Users/zhy/Downloads/ios/vlink_app_xunyi/xunYi7/library/ASIHttpRequest/ASIDownloadCache.m" )
AT_low_pc( 0x000ccfc0 )
AT_stmt_list( 0x0002cf0b )
AT_comp_dir( "/Users/zhy/Downloads/ios/vlink_app_xunyi" )
AT_APPLE_major_runtime_vers( 0x02 ) 0x0015dd38: TAG_subprogram [53] *
AT_name( "-[ASIDownloadCache isCachedDataCurrentForRequest:]" )
AT_decl_file( "/Users/zhy/Downloads/ios/vlink_app_xunyi/xunYi7/library/ASIHttpRequest/ASIDownloadCache.m" )
AT_decl_line( 315 )
AT_prototyped( 0x01 )
AT_type( {0x0015d490} ( BOOL ) )
AT_APPLE_isa( 0x01 )
AT_low_pc( 0x000cf278 )
AT_high_pc( 0x000cf9e2 )
AT_frame_base( r7 )
AT_object_pointer( {0x0015dd54} ) 0x0015dd86: TAG_lexical_block [10] *
AT_low_pc( 0x000cf2ca )
AT_high_pc( 0x000cf9de )
Line table dir : '/Users/zhy/Downloads/ios/vlink_app_xunyi/xunYi7/library/ASIHttpRequest'
Line table file: 'ASIDownloadCache.m' line 320, column 3 with start address 0x00000000000cf340 Looking up address: 0x00000000000cf358 in .debug_frame... found! 0x00007290: FDE
length: 0x0000000c
CIE_pointer: 0x00000000
start_addr: 0x000cf278 -[ASIDownloadCache isCachedDataCurrentForRequest:]
range_size: 0x0000076a (end_addr = 0x000cf9e2)
Instructions: 0x000cf278: CFA=4294967295+4294967295
到这里就知道问题所在了吧
Line table dir : '/Users/zhy/Downloads/ios/vlink_app_xunyi/xunYi7/library/ASIHttpRequest'
Line table file: 'ASIDownloadCache.m' line 320, column 3 with start address 0x00000000000cf340
如果有多个crash文件的话,可以重复操作一遍就好了。
苹果官方 Crash文件分析方法 (iOS系统Crash文件分析方法)的更多相关文章
- iOS 苹果官方 Crash文件分析方法 (iOS系统Crash文件分析方法)
时间2013-08-20 12:49:20 GoWhich原文 http://www.gowhich.com/blog/view/id/343 苹果官方 Crash文件分析方法 (iOS系统Cras ...
- (转载)iOS系统Crash文件分析方法
转自: http://ios-iphone.diandian.com/post/2012-05-18/19440182 Xcode 4.3的symbolicatecrash的位置和老版本的不一致了. ...
- ios系统crash文件分析
分析crash文件必备条件:crash文件的uuid,app的uuid,dsym文件的uuid必须一致 1> crash文件的uuid为Binary Images:0x4000 - 0x1173 ...
- iOS系统网络抓包方法
转到自己的博客收藏. 1. 网络共享 + 可视化抓包工具 基本原理 原理比较简单,ios设备通过代理方式共享连接mac电脑的无线网卡,使用抓包工具抓包,然后进行分析(我们推荐使用Wireshark,在 ...
- ios系统 ipa文件 打包流程详解 及 常见问题处理
注:先反省一下,原本打算一天一篇,每天进步一点点,但是最近变懒了,居然三天没有更新,在此告诫各位道友及我自己,程序员需戒欲,搞技术需持之以恒,不能三天打鱼,两天晒外. 现在步入主题,前段时间使用xco ...
- iOS——系统提供的dispatch方法
// 后台执行: dispatch_async(dispatch_get_global_queue(0,0), ^{ // something }); // 主线程执行: dispatch_async ...
- xcode编写c/c++静态库使用系统头文件问题
c/c++编写的静态库中有引用ios系统头文件比如: #include <EGL/egl.h> 在xcode编译的时候需要设置静态库程序: Build Settings-Header Se ...
- 【转】 分析iOS Crash文件:符号化iOS Crash文件的3种方法
当你的应用提交到AppStore或者各个渠道之后,请问你多久会拿到crash文件?你如何分析crash文件的呢? 上传crash文件 你的应用应当有模块能够在应用程序crash的时候上传crash信息 ...
- 分析iOS Crash文件:符号化iOS Crash文件的3种方法
转自:http://www.cocoachina.com/industry/20140514/8418.html 转自wufawei的博客 当你的应用提交到App Store或者各个渠道之后,请问你多 ...
随机推荐
- Virtualbox虚拟机设置不完全笔记
先说说我想实现的东西,我想在虚拟机安装各种开发环境,我个人在学习Node.然后我装了一个Ubuntu Server,所以我又想共享一个windows下的文件夹,这样可以让我在windows下开发,在L ...
- ios map 显示用户位置
昨天遇到个奇怪的问题,用户的位置在地图中死活不显示,showUserLocation也设置了,最后发现是因为实现了 mapView protocol中的一个方法: -(MKAnnotationView ...
- 剑指offer--面试题19
题目:求二叉树镜像 根据作者思路,自己所写代码如下: void BinaryTreeMirror(BinaryTreeNode* pRoot) { if(pRoot == NULL) return; ...
- PAT-乙级-1054. 求平均值 (20)
1054. 求平均值 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题的基本要求非常简单:给定N个实 ...
- netbean使用技巧
1.让代码智能提示 有些情况下Ctrl+Space这个键被一些输入法占了,我们需要修改一下点击 工具->常规->快捷键映射->找到显示代码完成弹出式菜单->编辑为你喜欢的键就好 ...
- Proxmox虚拟机增加硬盘容量
1.首先在虚拟机控制台选择调整硬盘容量,弹出窗口为增加的容量 2.重启虚拟机,用fdisk –l查看新增容量是否被识别 3.用cfdisk创建分区,分区格式为Primary 8e (Linux LVM ...
- HDU4612 Warm up 边双连通分量&&桥&&树直径
题目的意思很简单,给你一个已经连通的无向图,我们知道,图上不同的边连通分量之间有一定数量的桥,题目要求的就是要你再在这个图上加一条边,使得图的桥数目减到最少. 首先要做的就是找出桥,以及每个点所各自代 ...
- 深入理解JVM--类的执行机制
在完成将class文件信息加载到JVM并产生class对象之后,就可以执行Class对象的静态方法或者实例方法对对象进行调用了.JVM在源代码编译阶段将源代码编译为字节码文件,字节码是一种中间代码的方 ...
- hdu1031 Design T-Shirt
http://acm.hdu.edu.cn/showproblem.php?pid=1031 #include<iostream> #include<stdio.h> #inc ...
- Java传入参数个数不确定可用(Type ... values)
/** * 可变长的参数. * 有时候,我们传入到方法的参数的个数是不固定的,为了解决这个问题,我们一般采用下面的方法: * 1. 重载,多重载几个方法,尽可能的满足参数的个数.显然这不是什么好办法. ...