成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

iOS 使用 Metrickit 收集崩潰日志

移動開發 iOS
MetricKit 是 蘋果在 iOS13系統開始引入的用來匯總和分析有關異常和崩潰診斷以及電源和性能指標的每個設備的報告。當前市面上的開源框架,如 KSCrash,PLCrashReport 等框架都有一些崩潰不能抓取。

Metrickit 是什么

MetricKit 是 蘋果在 iOS13系統開始引入的用來匯總和分析有關異常和崩潰診斷以及電源和性能指標的每個設備的報告。

為什么要用 MetricKit 收集崩潰日志

當前市面上的開源框架,如 KSCrash,PLCrashReport 等框架都有一些崩潰不能抓取;比如PLCrashReport 不能抓取棧溢出的崩潰,不能抓取SIGKILL, SIGQUIT等信號量的崩潰。KSCrash 對SIGKILL的崩潰抓取也只能抓取一部分

Metrickit 缺陷

  • 目前只支持 iOS14 以后的崩潰日志收集
  • 崩潰日志沒有返回具體的崩潰時間和啟動時間,崩潰場景信息除了堆棧外沒有其余信息
  • 如果使用了段遷移編譯技術,主程序 macho 的地址和 uuid 無法匹配。

iOS14的崩潰日志是24小時會回調通知一次,時效性低;iOS15 之后,崩潰日志會在下次啟動之后就返回,但經驗證,有的會立即回調,有的則不然,規律不可琢磨

開始接入

1.添加 MetricKit

2.添加 MetricKit 監聽者

if (@available(iOS 14.0, *)) {

MXMetricManager *manager = [MXMetricManager sharedManager];

if (self && manager && [manager respondsToSelector:@selector(addSubscriber:)]) {

[manager addSubscriber:self];

}

}

3. 監聽者實現 MXMetricManagerSubscriber 協議方法, payloadDic 里面包含著上次本應用發生的崩潰日志堆棧和信息

 // 蘋果如果有數據數據,注冊監聽之后就會回調

- (void)didReceiveDiagnosticPayloads:(NSArray<MXDiagnosticPayload *> * _Nonnull)payloads API_AVAILABLE(ios(14.0)){

if (@available(iOS 14.0, *)) {

for (MXDiagnosticPayload *payload in payloads) {

NSDictionary *payloadDic = [payload dictionaryRepresentation];



});

}

}

}

4.日志組裝關鍵代碼示例

NSArray *callStackRootFrames = [dicFrame  ArrayValueForKey:kMetrkitCallStackRootFramesKey];

if (callStackRootFrames.count <= 0) {

continue;

}

NSDictionary *dicZero = [callStackRootFrames ObjectAtIndex:0];

int rootIndex = 0;

while (dicZero && dicZero.count > 0) {

NSString *binaryUUID = [dicZero stringValueForKey:kMetrkitBinaryUUIDKey];

NSString *binaryName = [dicZero stringValueForKey:kMetrkitBinaryNameKey];

long long baseAdd = [[dicZero NumberValueForKey:kMetrkitOffsetIntoBinaryTextSegmentKey] longLongValue];

long long address = [[dicZero numberValueForKey:kMetrkitAddressKey] longLongValue];

NSArray *subFrames = [dicZero arrayValueForKey:kMetrkitSubFramesKey];

[strStack appendFormat:@"%d %@ 0x%llx 0x%llx + %lld\n", rootIndex, binaryName, baseAdd, address, address - model.baseAddress];

rootIndex++;

if (subFrames && subFrames.count >= 0) {

dicZero = [subFrames ObjectAtIndex:0];

} else {

dicZero = nil;

}

MetricKit 返回字段含義及詳情

JSON總格式

crashDiagnostics 詳情

每一個崩潰為一個字典,具體內容為下

diagnosticMetaData 字典詳情

|terminationReason|String|崩潰原因| RBSTerminateContext domain:10 code:0x8BADF00D 
explanation:scene-update watchdog transgression: application :6308
exhausted real (wall clock) time allowance of 10.00 seconds|

callStackTree 字典詳情

callStacks 數組詳情

數組中元素為字典,詳情如下

callStackRootFrames 數組詳情

數組中元素為字典,詳情如下

diskWriteExceptionDiagnostics 詳情

每一個崩潰為一個字典,具體內容為下

diagnosticMetaData 字典詳情

callStackTree 字典詳情

callStacks 數組詳情

數組中元素為字典,詳情如下

callStackRootFrames 數組詳情

數組中元素為字典,詳情如下

cpuExceptionDiagnostics 詳情

每一個崩潰為一個字典,具體內容為下

diagnosticMetaData 字典詳情

callStackTree 字典詳情

callStacks 數組詳情

數組中元素為字典,詳情如下

callStackRootFrames 數組詳情

數組中元素為字典,詳情如下

hangDiagnostics 詳情

diagnosticMetaData 字典詳情

callStackTree 字典詳情

callStacks 數組詳情


callStackRootFrames 數組詳情

責任編輯:未麗燕 來源: Swift社區
相關推薦

2022-06-12 21:28:26

Fluentd開源

2023-08-31 07:46:54

KubernetesLoki

2022-12-29 08:00:26

Loki網絡設備

2024-03-11 00:01:00

PromtailLoki服務器

2011-07-29 11:10:56

IOS SimpleLogg 日志

2018-03-09 09:15:16

Linuxsyslog-ng日志

2021-09-07 09:34:04

CentOSfilebeatkafka

2015-08-20 10:23:23

前端代碼日志收集

2020-06-10 10:50:15

Linuxpstore內核

2013-05-02 14:39:11

iOS開發iOS應用崩潰解決

2021-07-20 08:32:16

Kubernetes日志平臺

2021-07-19 09:18:07

KubernetesELK Stackk8s

2017-08-02 14:37:31

LinuxKdump內核崩潰

2022-08-05 11:55:13

FlutteriOS

2015-10-27 15:54:29

message日志分析Linux

2022-06-20 11:15:08

日志容器Kubernetes

2015-10-19 09:47:39

history企業日志Linux

2022-01-10 09:35:50

日志語言解析器

2018-07-09 15:03:17

LinuxUnixSosreport

2022-02-18 15:19:52

日志收集工具開源
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲国产成人av好男人在线观看 | 自拍视频一区二区三区 | 亚洲啪啪 | 日韩国产在线 | 五月天婷婷丁香 | 国产精品中文字幕一区二区三区 | 欧美性猛片aaaaaaa做受 | 国产精品久久久久久久久久久久午夜片 | 中文字幕免费 | 久久亚洲一区二区 | 91亚洲精品在线 | 午夜av电影| 国产欧美一区二区三区日本久久久 | 亚洲精品99 | 在线国产一区二区 | 国产精品爱久久久久久久 | 在线小视频 | 久久精品久久久久久 | 成人久久久| 久久影院一区 | 国产免费一区二区三区 | 精品一区二区三区在线视频 | 蜜桃毛片 | 亚洲成人观看 | 性视频一区 | 午夜国产一级 | 一区二区三区视频免费观看 | 特黄毛片 | 久久久国产一区二区三区四区小说 | 黄色一级视频免费 | 久久久久久久久99 | 91视视频在线观看入口直接观看 | 亚洲一区二区视频在线观看 | 伊人欧美视频 | 久久午夜精品福利一区二区 | 亚洲一区久久 | 欧洲一区二区视频 | 久草免费电影 | 浴室洗澡偷拍一区二区 | 亚洲欧美一区二区三区情侣bbw | 99精品久久久久久久 |