Authored by 孟顺

移除 crash 上报事件

review by days
@@ -75,6 +75,7 @@ @@ -75,6 +75,7 @@
75 E7B8DE5E1A836F8700102CC4 /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E7B8DE5D1A836F8700102CC4 /* CoreTelephony.framework */; }; 75 E7B8DE5E1A836F8700102CC4 /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E7B8DE5D1A836F8700102CC4 /* CoreTelephony.framework */; };
76 E7B8DE621A838EC200102CC4 /* AdSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E7B8DE611A838EC200102CC4 /* AdSupport.framework */; }; 76 E7B8DE621A838EC200102CC4 /* AdSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E7B8DE611A838EC200102CC4 /* AdSupport.framework */; };
77 E7E3A1871BF098DA006A9266 /* AFHTTPRequestOperationManager+YHPriorityRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = E7E3A1861BF098DA006A9266 /* AFHTTPRequestOperationManager+YHPriorityRequest.m */; }; 77 E7E3A1871BF098DA006A9266 /* AFHTTPRequestOperationManager+YHPriorityRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = E7E3A1861BF098DA006A9266 /* AFHTTPRequestOperationManager+YHPriorityRequest.m */; };
  78 + F98D9182202304580054070B /* YHPatch.m in Sources */ = {isa = PBXBuildFile; fileRef = F98D9181202304580054070B /* YHPatch.m */; };
78 /* End PBXBuildFile section */ 79 /* End PBXBuildFile section */
79 80
80 /* Begin PBXContainerItemProxy section */ 81 /* Begin PBXContainerItemProxy section */
@@ -228,6 +229,8 @@ @@ -228,6 +229,8 @@
228 E7B8DE611A838EC200102CC4 /* AdSupport.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AdSupport.framework; path = System/Library/Frameworks/AdSupport.framework; sourceTree = SDKROOT; }; 229 E7B8DE611A838EC200102CC4 /* AdSupport.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AdSupport.framework; path = System/Library/Frameworks/AdSupport.framework; sourceTree = SDKROOT; };
229 E7E3A1851BF098DA006A9266 /* AFHTTPRequestOperationManager+YHPriorityRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "AFHTTPRequestOperationManager+YHPriorityRequest.h"; sourceTree = "<group>"; }; 230 E7E3A1851BF098DA006A9266 /* AFHTTPRequestOperationManager+YHPriorityRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "AFHTTPRequestOperationManager+YHPriorityRequest.h"; sourceTree = "<group>"; };
230 E7E3A1861BF098DA006A9266 /* AFHTTPRequestOperationManager+YHPriorityRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "AFHTTPRequestOperationManager+YHPriorityRequest.m"; sourceTree = "<group>"; }; 231 E7E3A1861BF098DA006A9266 /* AFHTTPRequestOperationManager+YHPriorityRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "AFHTTPRequestOperationManager+YHPriorityRequest.m"; sourceTree = "<group>"; };
  232 + F98D9181202304580054070B /* YHPatch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YHPatch.m; sourceTree = "<group>"; };
  233 + F98D9183202304650054070B /* YHPatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YHPatch.h; sourceTree = "<group>"; };
231 /* End PBXFileReference section */ 234 /* End PBXFileReference section */
232 235
233 /* Begin PBXFrameworksBuildPhase section */ 236 /* Begin PBXFrameworksBuildPhase section */
@@ -463,6 +466,8 @@ @@ -463,6 +466,8 @@
463 E7ADAE321AB946C100C9DD0B /* Model */ = { 466 E7ADAE321AB946C100C9DD0B /* Model */ = {
464 isa = PBXGroup; 467 isa = PBXGroup;
465 children = ( 468 children = (
  469 + F98D9183202304650054070B /* YHPatch.h */,
  470 + F98D9181202304580054070B /* YHPatch.m */,
466 E7ADAE331AB946C100C9DD0B /* YHDevice.h */, 471 E7ADAE331AB946C100C9DD0B /* YHDevice.h */,
467 E7ADAE341AB946C100C9DD0B /* YHDevice.m */, 472 E7ADAE341AB946C100C9DD0B /* YHDevice.m */,
468 E7ADAE351AB946C100C9DD0B /* YHError.h */, 473 E7ADAE351AB946C100C9DD0B /* YHError.h */,
@@ -693,6 +698,7 @@ @@ -693,6 +698,7 @@
693 E7A908731BB3C4B000E2EA39 /* YHPerformance.m in Sources */, 698 E7A908731BB3C4B000E2EA39 /* YHPerformance.m in Sources */,
694 E7ADAE3B1AB946C100C9DD0B /* YHDevice.m in Sources */, 699 E7ADAE3B1AB946C100C9DD0B /* YHDevice.m in Sources */,
695 E79828121AA6A5120035137C /* YH_KeychainStore.m in Sources */, 700 E79828121AA6A5120035137C /* YH_KeychainStore.m in Sources */,
  701 + F98D9182202304580054070B /* YHPatch.m in Sources */,
696 194EDC761A7F52D100421E6C /* main.m in Sources */, 702 194EDC761A7F52D100421E6C /* main.m in Sources */,
697 E7ADAE5B1AB95BC800C9DD0B /* YHAssemblyAssistant.m in Sources */, 703 E7ADAE5B1AB95BC800C9DD0B /* YHAssemblyAssistant.m in Sources */,
698 E7ADAE3C1AB946C100C9DD0B /* YHError.m in Sources */, 704 E7ADAE3C1AB946C100C9DD0B /* YHError.m in Sources */,
@@ -6,7 +6,7 @@ @@ -6,7 +6,7 @@
6 // 6 //
7 // 7 //
8 8
9 -#import <YH_Analytics/YH_Analytics.h> 9 +#import "YH_Analytics.h"
10 10
11 @interface YHPatch : YHAnalyItemData 11 @interface YHPatch : YHAnalyItemData
12 12
1 -//  
2 -// YHCrashReporter.h  
3 -// YH_Analytics  
4 -//  
5 -// Created by 王钱钧 on 15/2/4.  
6 -// Copyright (c) 2015年 YOHO. All rights reserved.  
7 -  
8 -// 负责crash信息收集  
9 -  
10 -#import <Foundation/Foundation.h>  
11 -  
12 -@interface YHCrashReporter : NSObject  
13 -  
14 -+ (YHCrashReporter *)sharedInstance;  
15 -  
16 -- (NSArray *)callstackAsArray;  
17 -  
18 -- (void)handleSignal:(NSDictionary *)userInfo;  
19 -  
20 -- (void)handleNSException:(NSDictionary *)userInfo;  
21 -  
22 -@end  
1 -//  
2 -// YHCrashReporter.m  
3 -// YH_Analytics  
4 -//  
5 -// Created by 王钱钧 on 15/2/4.  
6 -// Copyright (c) 2015年 YOHO. All rights reserved.  
7 -//  
8 -  
9 -#import "YHCrashReporter.h"  
10 -#import "YH_Analytics.h"  
11 -#import "YHError.h"  
12 -#include <signal.h>  
13 -#include <execinfo.h>  
14 -  
15 -#pragma mark - C Fuctions  
16 -  
17 -void sighandler(int signal)  
18 -{  
19 - const char* names[NSIG];  
20 - names[SIGABRT] = "SIGABRT";  
21 - names[SIGBUS] = "SIGBUS";  
22 - names[SIGFPE] = "SIGFPE";  
23 - names[SIGILL] = "SIGILL";  
24 - names[SIGPIPE] = "SIGPIPE";  
25 - names[SIGSEGV] = "SIGSEGV";  
26 -  
27 - YHCrashReporter *crash = [YHCrashReporter sharedInstance];  
28 -  
29 - NSArray *arr = [crash callstackAsArray];  
30 - NSDictionary *userInfo = @{  
31 - JsonKeyCrashCallstack : arr,  
32 - JsonKeyCrashSignal : @(signal),  
33 - JsonKeyCrashSignalName : [NSString stringWithUTF8String:names[signal]],  
34 - };  
35 - [crash performSelectorOnMainThread:@selector(handleSignal:) withObject:userInfo waitUntilDone:YES];  
36 -}  
37 -  
38 -void uncaughtCrashExceptionHandler(NSException *exception)  
39 -{  
40 - YHCrashReporter *crash = [YHCrashReporter sharedInstance];  
41 -  
42 - NSArray *arr = [exception callStackSymbols];  
43 - NSDictionary *userInfo = @{  
44 - JsonKeyCrashCallstack : arr,  
45 - JsonKeyCrashExceptionName : exception.name,  
46 - JsonKeyCrashExceptionReason : exception.reason,  
47 - };  
48 - [crash performSelectorOnMainThread:@selector(handleNSException:) withObject:userInfo waitUntilDone:YES];  
49 -}  
50 -  
51 -  
52 -@implementation YHCrashReporter  
53 -  
54 -  
55 -+ (YHCrashReporter *)sharedInstance  
56 -{  
57 - static YHCrashReporter *sharedInstance = nil;  
58 -  
59 - static dispatch_once_t onceToken;  
60 - dispatch_once(&onceToken, ^{  
61 - sharedInstance = [[YHCrashReporter alloc] init];  
62 - });  
63 -  
64 - return sharedInstance;  
65 -}  
66 -  
67 -#pragma mark - Lifetime methods  
68 -  
69 -- (id)init  
70 -{  
71 - self = [super init];  
72 - if (self) {  
73 - signal(SIGABRT, sighandler);  
74 - signal(SIGBUS, sighandler);  
75 - signal(SIGFPE, sighandler);  
76 - signal(SIGILL, sighandler);  
77 - signal(SIGPIPE, sighandler);  
78 - signal(SIGSEGV, sighandler);  
79 -  
80 - NSSetUncaughtExceptionHandler(&uncaughtCrashExceptionHandler);  
81 - }  
82 -  
83 - return self;  
84 -}  
85 -  
86 -- (void)dealloc  
87 -{  
88 - signal(SIGABRT, SIG_DFL);  
89 - signal(SIGBUS, SIG_DFL);  
90 - signal(SIGFPE, SIG_DFL);  
91 - signal(SIGILL, SIG_DFL);  
92 - signal(SIGPIPE, SIG_DFL);  
93 - signal(SIGSEGV, SIG_DFL);  
94 -  
95 - NSSetUncaughtExceptionHandler(NULL);  
96 -}  
97 -  
98 -#pragma mark - methods  
99 -  
100 -- (NSArray *)callstackAsArray  
101 -{  
102 - void *callstack[128];  
103 - const int numFrams = backtrace(callstack, 128);  
104 - char **symbols = backtrace_symbols(callstack, numFrams);  
105 -  
106 - NSMutableArray *arr = [NSMutableArray arrayWithCapacity:numFrams];  
107 - for (int i = 0; i < numFrams; i++) {  
108 - [arr addObject:[NSString stringWithUTF8String:symbols[i]]];  
109 - }  
110 -  
111 - free(symbols);  
112 -  
113 - return arr;  
114 -}  
115 -  
116 -- (void)handleSignal:(NSDictionary*)userInfo  
117 -{  
118 - YALog(@"crash============:\n%@", userInfo);  
119 - if (!userInfo || ![userInfo isKindOfClass:[NSDictionary class]]) {  
120 - return;  
121 - }  
122 -  
123 - [[YH_Analytics sharedInstance] logError:kErrorTypeCrash parameters:@{ JsonKeyErrorST: userInfo}];  
124 -}  
125 -  
126 -- (void)handleNSException:(NSDictionary*)userInfo  
127 -{  
128 - YALog(@"crash============:\n%@", userInfo);  
129 - if (!userInfo || ![userInfo isKindOfClass:[NSDictionary class]]) {  
130 - return;  
131 - }  
132 -  
133 - [[YH_Analytics sharedInstance] logError:kErrorTypeCrash parameters:@{ JsonKeyErrorST: userInfo}];  
134 -}  
135 -  
136 -@end  
@@ -13,7 +13,6 @@ @@ -13,7 +13,6 @@
13 #import "YHAnalyticsMacro.h" 13 #import "YHAnalyticsMacro.h"
14 #import "YH_Analytics.h" 14 #import "YH_Analytics.h"
15 #import "NSString+YHAnalytics.h" 15 #import "NSString+YHAnalytics.h"
16 -#import "YHCrashReporter.h"  
17 #import "YHAssemblyAssistant.h" 16 #import "YHAssemblyAssistant.h"
18 #import "OpenUDID.h" 17 #import "OpenUDID.h"
19 #import "YHError.h" 18 #import "YHError.h"
@@ -62,7 +61,6 @@ @@ -62,7 +61,6 @@
62 61
63 62
64 - (NSString *)timestamp; 63 - (NSString *)timestamp;
65 -- (void)registerCrashReporter;  
66 - (void)registerAppWillEnterForegroundNotification; 64 - (void)registerAppWillEnterForegroundNotification;
67 - (void)resetSession; 65 - (void)resetSession;
68 - (void)uploadDiskData; 66 - (void)uploadDiskData;
@@ -142,13 +140,6 @@ @@ -142,13 +140,6 @@
142 140
143 #pragma mark - Private Method 141 #pragma mark - Private Method
144 142
145 -- (void)registerCrashReporter  
146 -{  
147 - if (self.enableExceptionLog) {  
148 - [YHCrashReporter sharedInstance];  
149 - }  
150 -}  
151 -  
152 - (void)registerAppWillEnterForegroundNotification 143 - (void)registerAppWillEnterForegroundNotification
153 { 144 {
154 // 当程序切换到后台,重置session 和 eventIndex 145 // 当程序切换到后台,重置session 和 eventIndex
@@ -213,8 +204,6 @@ @@ -213,8 +204,6 @@
213 204
214 [[YHAssemblyAssistant sharedInstance] prepareImmediUploadDic:appId sessionId:self.session channelId:self.channelId]; 205 [[YHAssemblyAssistant sharedInstance] prepareImmediUploadDic:appId sessionId:self.session channelId:self.channelId];
215 206
216 - [self registerCrashReporter];  
217 -  
218 [self registerAppWillEnterForegroundNotification]; 207 [self registerAppWillEnterForegroundNotification];
219 208
220 /* 209 /*