如何使用 JSON 分析 iPhone 崩溃日志

How to analyse iPhone crash log with JSON

我得到了这样的崩溃日志:

{"timestamp":"2017-01-05 22:29:03.03 +0800","bug_type":"298","os_version":"iPhone OS 9.3.2 (13F69)"}
{
 "crashReporterKey" : "6e088e6d206ce6025a40eacd5ea68779dc5ac344",
 "kernel" : "Darwin Kernel Version 15.5.0: Mon Apr 18 16:44:06 PDT 2016; root:xnu-3248.50.21~4\/RELEASE_ARM64_T7000",
 "product" : "iPhone7,2",
 "incident" : "C106CE8A-F492-47FF-BEA9-293E6ACFE201",
 "date" : "2017-01-05 22:29:03.03 +0800",
 "build" : "iPhone OS 9.3.2 (13F69)",
 "timeDelta" : 3377,
 "memoryStatus" : {
 "compressorSize" : 30099,
 "pageSize" : 4096,
 "compressions" : 719018,
 "memoryPages" : {
   "active" : 33364,
   "throttled" : 0,
   "fileBacked" : 24001,
   "wired" : 169666,
   "anonymous" : 27027,
   "purgeable" : 6,
   "inactive" : 15716,
   "free" : 2836,
   "speculative" : 1948
 },
 "uncompressed" : 81552,
 "decompressions" : 333878
},
 "largestProcess" : "MYAPP",
 "processes" : [
 {
   "rpages" : 556,
   "states" : [
     "daemon",
     "idle"
   ],
   "name" : "assetsd",
   "pid" : 839,
   "reason" : "vm-pageshortage",
   "fds" : 50,
   "uuid" : "MYUUID",
   "purgeable" : 0,
   "cpuTime" : 0.373819,
   "lifetimeMax" : 970
 },
 {
   "rpages" : 231,
   "states" : [
     "daemon",
     "idle"
   ],
   "name" : "followupd",
   "pid" : 851,
   "reason" : "vm-pageshortage",
   "fds" : 50,
   "uuid" : "MYUUID",
   "purgeable" : 0,
   "cpuTime" : 0.04115,
   "lifetimeMax" : 487
 }, 

and a lot more...

没有必要符号化它,因为没有显示调用堆栈。

我只是 运行 我的应用程序播放了大约一个小时的视频,然后就出现了崩溃。

不是每次都这样,但经常这样。

这样的日志应该怎么读?

任何人都可以向我解释一下哪些键是重要的以及它们在大 json 中的含义吗?

您的应用程序崩溃,因为它 运行 内存不足。我不知道你的应用程序是做什么的,但它要么有内存泄漏,要么 monitoring/releasing 内存不正确。

根据 Apple 文档,它说 [vm-pageshortage] 的原因是 "The process was killed due to memory pressure."

您可以在此处阅读有关崩溃报告的 Apple 文档:https://developer.apple.com/library/content/technotes/tn2151/_index.html

@dstudeba 是对的,当您播放视频时,您的 CPU 内存消耗比预期的要多。有时会发生

  1. 当有大量数据来自服务器时。
  2. 当您没有管理应用程序中的内存时。

更多详情:Analyzing Crash Reports and MemoryMgmt