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

iOS 使用 Metrickit 收集崩潰日志

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

Metrickit 是什么

MetricKit 是 蘋果在 iOS13系統(tǒng)開始引入的用來匯總和分析有關(guān)異常和崩潰診斷以及電源和性能指標(biāo)的每個設(shè)備的報告。

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

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

Metrickit 缺陷

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

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

開始接入

1.添加 MetricKit

2.添加 MetricKit 監(jiān)聽者

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

MXMetricManager *manager = [MXMetricManager sharedManager];

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

[manager addSubscriber:self];

}

}

3. 監(jiān)聽者實現(xiàn) MXMetricManagerSubscriber 協(xié)議方法, payloadDic 里面包含著上次本應(yīng)用發(fā)生的崩潰日志堆棧和信息

 // 蘋果如果有數(shù)據(jù)數(shù)據(jù),注冊監(jiān)聽之后就會回調(diào)

- (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.日志組裝關(guān)鍵代碼示例

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 詳情

每一個崩潰為一個字典,具體內(nèi)容為下

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 數(shù)組詳情

數(shù)組中元素為字典,詳情如下

callStackRootFrames 數(shù)組詳情

數(shù)組中元素為字典,詳情如下

diskWriteExceptionDiagnostics 詳情

每一個崩潰為一個字典,具體內(nèi)容為下

diagnosticMetaData 字典詳情

callStackTree 字典詳情

callStacks 數(shù)組詳情

數(shù)組中元素為字典,詳情如下

callStackRootFrames 數(shù)組詳情

數(shù)組中元素為字典,詳情如下

cpuExceptionDiagnostics 詳情

每一個崩潰為一個字典,具體內(nèi)容為下

diagnosticMetaData 字典詳情

callStackTree 字典詳情

callStacks 數(shù)組詳情

數(shù)組中元素為字典,詳情如下

callStackRootFrames 數(shù)組詳情

數(shù)組中元素為字典,詳情如下

hangDiagnostics 詳情

diagnosticMetaData 字典詳情

callStackTree 字典詳情

callStacks 數(shù)組詳情


callStackRootFrames 數(shù)組詳情

責(zé)任編輯:未麗燕 來源: Swift社區(qū)
相關(guān)推薦

2022-06-12 21:28:26

Fluentd開源

2023-08-31 07:46:54

KubernetesLoki

2022-12-29 08:00:26

Loki網(wǎng)絡(luò)設(shè)備

2024-03-11 00:01:00

PromtailLoki服務(wù)器

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內(nèi)核

2013-05-02 14:39:11

iOS開發(fā)iOS應(yīng)用崩潰解決

2021-07-20 08:32:16

Kubernetes日志平臺

2021-07-19 09:18:07

KubernetesELK Stackk8s

2017-08-02 14:37:31

LinuxKdump內(nèi)核崩潰

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企業(yè)日志Linux

2022-01-10 09:35:50

日志語言解析器

2018-07-09 15:03:17

LinuxUnixSosreport

2022-02-18 15:19:52

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

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 久久久国产一区二区三区 | 免费黄色网址视频 | 国产精品激情在线 | 国产 日韩 欧美 在线 | 日韩中文字幕在线观看 | 日韩专区中文字幕 | 色婷婷av一区二区三区软件 | 欧美精品网站 | 在线看免费 | 一区二区三区视频在线免费观看 | 亚洲视频 欧美视频 | 午夜理伦三级理论三级在线观看 | 国产精品美女久久久久aⅴ国产馆 | 欧美精品一区二区三区蜜桃视频 | 亚洲一区二区不卡在线观看 | 欧美aⅴ| 日韩成人av在线 | 国产不卡一区 | 成人在线视频免费观看 | 黄色免费在线网址 | 国产成人精品免费视频大全最热 | 欧美黄在线观看 | 一区二区三区中文字幕 | 久久免费精彩视频 | 黑人巨大精品 | 成人免费激情视频 | 亚洲一区二区视频 | 国产精品久久久久999 | 欧美一区二区小视频 | 国产精品不卡一区 | 九色国产 | 亚洲久久在线 | 九九热在线视频观看这里只有精品 | hsck成人网| 国产一级免费在线观看 | 欧美色性 | www中文字幕 | 一二三在线视频 | 97超碰在线免费 | 日韩在线一区二区三区 | 国产高清免费视频 |