iOS项目的bug统计

当我们的 app 开发完成 并切 上线之后, 会被  很多用户去使用,在他们使用的 过程中 可能会 由于各种原因 导致  程序 崩溃 ,如果我们不关心这个问题, 就不可能 做出 健壮的 app。

我们可以自己 写 code 来 捕获异常 ,在 app 崩溃之前 将  异常内容 固化成文件 ,在 app 下次 启动时   再将 异常 信息 上传到 我们的服务器  供我们 分析  , 也可以使用  统计平台都  错误分析 功能  ,百度或者 友盟 都有  错误 统计 和分析 功能 。

具体怎么使用 统计 sdk , 下载完 sdk 后 文档 说的都很清楚,我就不 解释了 。

下 面说一下 ,获取到 异常 信息后 如何 使用  dwarfdump 工具 在 .dsym文件中 找出  出错的 代码 位置 。
1、首先 你要 有 dsym 文件才行   ,dsym 文件的位置  由于 打包的方式不同 可能  不同 ,如果你是 直接 build 出来的  ,那么 在 你 对应的  .app 文件相同目录下就可以看到 dsym文件,如果你是  菜单栏中  product -> archive  ,archive 完了 打开 Organizer ->Archives  中 打的包 ,那么你的 dsym 文件将在 对应 的 archive 中的 dsyms 文件夹下 。
2、获取 异常日志 
登录友盟统计平台 ,进入制定 app ,点击 左边栏 里的 错误分析 , 这样就可以看到 错误列表 ,
比如:

Application received signal SIGSEGV    2.1.5    20865    2014-06-06 15:31:55    
点击该错误 可以看到 详细信息

Application received signal SIGSEGV (null) ( 	0   CoreFoundation                      0x2f471f23  + 154 	1   libobjc.A.dylib                     0x39f38ce7 objc_exception_throw + 38 	2   CoreFoundation                      0x2f471e4d  + 0 	3   aaaaaaaa                        0x8aa981 _ZNSt3__113__vector_baseIP10OneRequestNS_9allocatorIS2_EEED2Ev + 1134736 	4   libsystem_platform.dylib            0x3a55071b _sigtramp + 34 	5   aaaaaaaa                        0x7439e9 _ZNSt3__113__vector_baseIP9OnePacketNS_9allocatorIS2_EEED2Ev + 3044  	6   aaaaaaaa                        0x749769 _ZN14BasicHashTable8IteratorD2Ev + 568 	7   aaaaaaaa                        0x760f93 _ZN12THREAD_MUTEXC2Ev + 12810 	8   libsystem_pthread.dylib             0x3a554959  + 140 	9   libsystem_pthread.dylib             0x3a5548cb _pthread_start + 102 	10  libsystem_pthread.dylib             0x3a552ae8 thread_start + 8 )  dSYM UUID: 8AA8370C-D292-3051-BF23-B46128B941E2 CPU Type: armv7 Slide Address: 0x00004000 Binary Image: FengYunZhiBo Base Address: 0x00025000
3、使用 dwarfdump 导出 异常信息 

进入 终端 输入,$dSYMPath  就是 第一步获取的  dsym 文件的路径 ,然后回车,就可以看到 错误信息了

dwarfdump --arch=armv7 --lookup 0x8aa981 $dSYMPath

0x0172f6da: Compile Unit: length = 0x00005ec0  version = 0x0002  abbr_offset = 0x00000000  addr_size = 0x04  (next CU at 0x0173559e)

0x0172f6e5: TAG_compile_unit [233] *
             AT_producer( "Apple LLVM version 5.0 (clang-500.2.76) (based on LLVM 3.3svn)" )
             AT_language( DW_LANG_C99 )
             AT_name( "libavformat/rtpenc.c" )
             AT_low_pc( 0x008a9e14 )
             AT_stmt_list( 0x0027eb6a )
             AT_comp_dir( "/Users/fyzb0/Desktop/ffmpegFastBuild/build/src/ffmpeg-2.1" )
             AT_APPLE_optimized( 0x01 )

0x01734bec:     TAG_subprogram [351] *
                 AT_name( "rtp_write_packet" )
                 AT_decl_file( "libavformat/rtpenc.c" )
                 AT_decl_line( 483 )
                 AT_prototyped( 0x01 )
                 AT_type( {0x01730ca0} ( int ) )
                 AT_APPLE_isa( 0x01 )
                 AT_low_pc( 0x008aa37c )
                 AT_high_pc( 0x008aaba4 )
                 AT_frame_base( r7 )
                 AT_APPLE_omit_frame_ptr( 0x01 )

0x01734c8b:         TAG_lexical_block [51] *
                     AT_ranges( 0x0011e928
                        [0x008aa5b4 - 0x008aab8c)
                        [0x008aab96 - 0x008aaba4)
                         End )
Line table dir : 'libavformat'
Line table file: 'rtpenc.c' line 322, column 0 with start address 0x00000000008aa968

Looking up address: 0x00000000008aa981 in .debug_frame... found!

0x00036e30: FDE
        length: 0x0000000c
   CIE_pointer: 0x00000000
    start_addr: 0x008aa37c rtp_write_packet
    range_size: 0x00000828 (end_addr = 0x008aaba4)
  Instructions: 0x008aa37c: CFA=4294967295+4294967295

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值