- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我对使用 iOS 崩溃日志有些陌生 - 我非常熟悉基于应用程序的崩溃日志,因为它们很容易被符号化,但我仍在尝试弄清楚如何读取生成的日志看门狗超时。明确地说,这些超时是由我正在编写的通知中心小部件引起的,它作为 SpringBoard 进程的一部分运行。超时通常是由我的代码中的错误(即访问已释放的对象)引起的,但 SpringBoard 没有获得常规的崩溃和崩溃日志,而是在看门狗触发重新启动之前挂起 2 分钟。
所以我想我的问题有两个方面。首先,为什么当我的代码出错时 SpringBoard 只是挂起,而不是崩溃(因此给我一个更有用的崩溃日志)?其次,我如何利用看门狗超时日志找出代码中问题的根源?我已经尝试使用在我的 makefile 中设置的 -g
标志和 DEBUG=1
选项编译我的代码(使用 theos),并启用 syslogd
,但不幸的是,这些都没有影响看门狗超时日志的输出。也许我只是遗漏了一些东西,但我想不出如何利用这些日志中的信息,或者如何让它们提供比现有信息更有用的信息。
这是看门狗超时的示例日志,供引用。我试图只抓取日志的相关部分,但如有必要,我可以提供整个日志。
Hardware Model: iPhone3,1
OS Version: iPhone OS 5.0.1 (9A405)
Kernel version: Darwin Kernel Version 11.0.0: Tue Nov 1 20:33:58 PDT 2011; root:xnu-1878.4.46~1/RELEASE_ARM_S5L8930X
Date: 2012-01-25 17:38:35 -0800
Exception Code: 0xfaded321
Reason: Watchdog timeout: 120.021790s since last successful ping: 3506u0 3406m0 3406u0 3306m0 3306u0 3206m0 3206u0 3106m0 3106u0 3006m0 3006u0 2903m0 2903u0 2800m0 2800u0 2700m0 2700u0 2600m0 2600u0 2500m0 2500u0 2400m0 2400u0 2300m0 2300u0 2200m0 2200u0 2100m0 2100u0 2000m0 2000u0 1900m0 1900u0 1800m0 1800u0 1700m0 1700u0 1600m0 1600u0 1500m0 1500u0 1400m0 1400u0 1300m0 1300u0 1200m0 1200u0 1000m10004003 1000u0 1000u0 800m10004003 800u0 800u0 600m10004003 600u0 600u0 400m10004003 400u0 400u0 200m10004003 200u0 200u0 0m10000004 0c1328
Thermal Level: 0
Thermal Sensors: 2435 2353 5146 2839 2348 2821 2544 2406 2935 2635 32768 2 2736 2703 2430 2435 2421 2436 1973 1834 1971
Frontmost process PID: 4904
Jetsam Level: 20
Free Pages: 15086
Active Pages: 7397
Inactive Pages: 3351
Purgeable Pages: 1992
Wired Pages: 15818
Speculative Pages: 1772
Throttled Pages: 85667
Busy Buffer Count: 0
Process 0 info:
resident memory bytes: 44748800
page faults: 3189
page-ins: 0
copy-on-write faults: 0
user time in task: 151641.651106 seconds
system time in task: 0.000000 seconds
Process 0 kernel_task threads:
thread 0x1 TH_WAIT|TH_UNINT 0x802e0158
thread priority: 92
thread sched flags: none
kernel cont 8005aa29
user time in thread: 11.050610 seconds
system time in thread: 0.000000 seconds
// Continues in this format for a while...
...
// SpringBoard process log
Process 4904 info:
Frontmost
resident memory bytes: 63995904
page faults: 932726
page-ins: 17055
copy-on-write faults: 5881
user time in task: 883.320096 seconds
system time in task: 0.000000 seconds
Process 4904 binary images:
0xf6000 <7506c20d86da3f1dbe9bf38f8bda253d>
0x386000 <cf2cce379dcd3a4c970e3196b908b0b6>
0x3cd000 <30381ec9e24c3c289f447bf428bda2c1>
0x500000 <8a7d931c6871371e8c011cb2b9d60a4b>
0x511000 <4cd6f668c82c3232a60da2f40737bb7b>
0x3f1000 <fd9fcb38af01393f888320f2a67d9d8d>
0x3f5000 <d375337d03a7324c9cfb608b7231eeea>
0x639000 <ee905d084b7a3ee1b8d5ddf3a0d2dc2d>
0x3fc000 <72f867f586cb34bd94ea52e2b1582b8d>
0x642000 <87085dc54e1f324cad66b1e07d504fee>
0x64e000 <25608ce0a9e23bd5a78415481897f8bc>
0x653000 <af0bbe7579b13d14aee2fc8967e3c933>
0x1993000 <afb6041043ca3935b08e00630906d9b2>
0x1997000 <c755a0ab2ec43860931bc844b358df2d>
0x1a35000 <b2f2268e166838f286a5838cc243bd01>
0x1a42000 <0a8f131d01f63458846f0b016a88f080>
0x1a58000 <97daf7f3c6cd34359e7c63ce16b33e6e>
0x1aa8000 <bdc6016e1f9e3552b41fc6feced31050>
0x3a3000 <36a26644e27f3bb7b5b2c8157df7dba2>
0x3a7000 <a9101c6d02d33f128837bb355e8bfc4b>
0x3aa000 <aa58ea5c933232d99b51b4192dc8f180>
0x3ad000 <f5f9138532993ca1959bf0973a5de0fd>
0x1aba000 <943484dfa081c192ec89f3f2329b085a>
0x3b4000 <aa0b4733baee386ab29bfcbd74beaa57>
0x3c0000 <dfda867ef28e362bb67a734199725a72>
0x1ad2000 <bba657e1bd09bab5f888545db2928786>
0x1ad7000 <fe21097b2cb83481a70c9ab877af55e3>
0x1ae1000 <ad65601afce130f3abf98b3279fad9ce>
0x1ae5000 <d138ce2db8b033aba6119acf3d561535>
0x4dab000 <45d7c264810c364b976dba254572d73d>
0x4ee8000 <cf8b322a0143350eb7bb7146c90c72d9>
0x4f7f000 <d203aed2bda137bb9cd5799e8d8fd480>
0x7325000 <199f52167001328a8e76735cd1f6c12a>
0x67f5000 <dc67fb590cb49f466ef7e82a3f44de28>
0x6f62000 <b00c29872f767a3a993ef2e7724af2e8>
0x681f000 <c4d71529a1d51704706fffa892c4f5d4>
0x6834000 <9d55da6026ab3f9574a9c9950794f0c0>
0x6867000 <9f0179854929b62ee16f5aeed620c303>
0x7375000 <892ebb5b3528fa70720361182fe71fe8>
0x6894000 <d7a840f7a771adea76922c6ecd09de95>
0x7379000 <1d40433bbdf09c726cc36edd0894bc03>
0x737e000 <9ef7d722cc04353aad958c6e2f4a3cf7>
0x738f000 <4c8273a6631135ee817d250488e2c3a8>
0x7b41000 <2f8d756ef0223c02b924ddd707315c5b>
0x7b48000 <734a26aa647d3b76b9f2c497f787bde2>
0x7b5a000 <563cf37a7e5b39de8c2fe7e7428a8b0e>
0x7c10000 <ede34c56929f3722b575b295964ddbcb>
0x7d7a000 <ccec053d8f2a3893840565eb19e2401f>
0x7ec2000 <4d06e894046a33818ac5458a29a744f1>
0x619a000 <6525fe796904390bb5a10d71d3ecd11f>
0x61a5000 <3fc0a7cfe9593de39f1295fd34e3c3a8>
0x61a8000 <15c155566d4637de9db0fca6a4a4d909>
0x61bb000 <f3f4ff89e340da2ceb563577d11c6701>
0x6a26000 <b1c8b77244c8317493bdb5db5adba8bb>
0x61c1000 <46f5d93c6ba0382891f35b04740e7a77>
0x6ad8000 <303c7dd64de03ce1a1d34f055c38f5c9>
0x662f000 <402f53a8b8963879a352a1c799d04536>
0x69bd000 <dea93838279539519f94dc6ee85e74ce>
0x69a9000 <54c6fb4190093744b2096fb99c6ac6ca>
0x568000 <8826a6e7f75f80ec2d99607e8d702d8e>
Process 4904 SpringBoard threads:
thread 0x2f43e TH_WAIT 0
thread priority: 22
thread sched flags: none
kernel cont 8000f401
user 0x35c63010 0x35c6320d 0x376818cb 0x376802f7 0x376809ad 0x3767ed03 0x3767ebcd 0x36dc5bf9 0x36dc574d 0x33d5aab3 0x33cb5680 0x36dbc73d 0x3f21c4 0x33cb7803 0x3572d50f 0x33d24577 0x33cb00cf 0x356a13fb 0x36dbd7cb 0x36dbd6f9 0x36dc7183 0x376723e1 0x33d2c553 0x33d2c4f5 0x33d2b343 0x33cae4dd 0x33cae3a5 0x30532fcd 0x3712f743 0xf9a33 0xf9074
user time in thread: 393.531235 seconds
system time in thread: 0.000000 seconds
thread 0x2f44b TH_WAIT 0
thread priority: 33
thread sched flags: none
kernel cont 80199e39
user 0x35c633b4 0x3698de7f 0x3698db9d 0
user time in thread: 3.898458 seconds
system time in thread: 0.000000 seconds
thread 0x2f450 TH_WAIT 0
thread priority: 55
thread sched flags: none
kernel cont 8000f401
user 0x35c63010 0x35c6320d 0x348ca5bb 0x34919e6d 0x32afec1d 0x32afead8
user time in thread: 15.476818 seconds
system time in thread: 0.000000 seconds
thread 0x2f451 TH_WAIT 0
thread priority: 54
thread sched flags: none
kernel cont 8000f401
user 0x35c63010 0x35c6320d 0x33d2c423 0x33d2b15b 0x33cae4dd 0x33d2b47b 0x348f5573 0x34919e6d 0x32afec1d 0x32afead8
user time in thread: 0.000361 seconds
system time in thread: 0.000000 seconds
thread 0x2f452 TH_WAIT 0
thread priority: 31
thread sched flags: none
kernel cont 8000f401
user 0x35c63010 0x35c6320d 0x33d2c423 0x33d2b15b 0x33cae4dd 0x33cae3a5 0x356a2b85 0x356bc533 0x3740b3c7 0x357425a1 0x32afec1d 0x32afead8
user time in thread: 3.802697 seconds
system time in thread: 0.000000 seconds
thread 0x2f453 TH_WAIT 0
thread priority: 30
thread sched flags: none
kernel cont 8000f401
user 0x35c63010 0x35c6320d 0x33d2c423 0x33d2b15b 0x33cae4dd 0x33cae3a5 0x3618212f 0x32afec1d 0x32afead8
user time in thread: 0.781208 seconds
system time in thread: 0.000000 seconds
thread 0x2f45c TH_WAIT 0
thread priority: 54
thread sched flags: none
kernel cont 8000f401
user 0x35c63010 0x35c6320d 0x33d2c423 0x33d2b15b 0x33cae4dd 0x33d2b47b 0x348f5573 0x34919e6d 0x32afec1d 0x32afead8
user time in thread: 343.767086 seconds
system time in thread: 0.000000 seconds
thread 0x2f460 TH_WAIT 0
thread priority: 31
thread sched flags: none
kernel cont 8000f401
user 0x35c63010 0x35c6320d 0x35c643e3 0x302e2f85 0x32afec1d 0x32afead8
user time in thread: 0.050931 seconds
system time in thread: 0.000000 seconds
thread 0x2f461 TH_WAIT 0
thread priority: 63
thread sched flags: none
kernel cont 8000f401
user 0x35c63010 0x35c6320d 0x33d2c423 0x33d2b15b 0x33cae4dd 0x33d2b47b 0x302e0a17 0x32afec1d 0x32afead8
user time in thread: 58.461374 seconds
system time in thread: 0.000000 seconds
thread 0x2f468 TH_WAIT 0
thread priority: 31
thread sched flags: none
kernel cont 8000f401
user 0x35c63010 0x35c6320d 0x33d2c423 0x33d2b15b 0x33cae4dd 0x33cae3a5 0x169175 0x32afec1d 0x32afead8
user time in thread: 0.497826 seconds
system time in thread: 0.000000 seconds
thread 0x2f469 TH_WAIT 0
thread priority: 31
thread sched flags: none
kernel cont 8000f401
user 0x35c63010 0x35c6320d 0x33d2c423 0x33d2b15b 0x33cae4dd 0x33cae3a5 0x16902f 0x32afec1d 0x32afead8
user time in thread: 0.000296 seconds
system time in thread: 0.000000 seconds
thread 0x2f46c TH_WAIT 0x86369178
thread priority: 47
thread sched flags: none
kernel cont 801d89e9
user 0x35c73068 0x32afef35 0x32afecb1 0x31c5a007 0x34abdfc1 0x31c79bcd 0x32afec1d 0x32afead8
user time in thread: 0.000439 seconds
system time in thread: 0.000000 seconds
thread 0x2f4f7 TH_WAIT 0
thread priority: 31
thread sched flags: none
kernel cont 8000f401
user 0x35c63010 0x35c6320d 0x33d2c423 0x33d2b15b 0x33cae4dd 0x33cae3a5 0x356a2b85 0x356bc533 0x356aea91 0x357425a1 0x32afec1d 0x32afead8
user time in thread: 0.067711 seconds
system time in thread: 0.000000 seconds
thread 0x2f502 TH_WAIT 0
thread priority: 31
thread sched flags: none
kernel cont 8000f401
user 0x35c63010 0x35c6320d 0x33d2c423 0x33d2b15b 0x33cae4dd 0x33cae3a5 0x32dba405 0x32afec1d 0x32afead8
user time in thread: 0.010444 seconds
system time in thread: 0.000000 seconds
thread 0x2f503 TH_WAIT 0
thread priority: 31
thread sched flags: none
kernel cont 8000f401
user 0x35c63010 0x35c6320d 0x33d2c423 0x33d2b15b 0x33cae4dd 0x33cae3a5 0x32db96ef 0x32afec1d 0x32afead8
user time in thread: 0.022591 seconds
system time in thread: 0.000000 seconds
thread 0x2f53c TH_WAIT 0
thread priority: 31
thread sched flags: none
kernel cont 8000f401
user 0x35c63010 0x35c6320d 0x33d2c423 0x33d2b15b 0x33cae4dd 0x33cae3a5 0x356a2b85 0x356bc533 0x7d7bdbd 0x356aea91 0x357425a1 0x32afec1d 0x32afead8
user time in thread: 0.061308 seconds
system time in thread: 0.000000 seconds
thread 0x2f55d TH_WAIT 0
thread priority: 33
thread sched flags: none
kernel cont 8000f401
user 0x35c63010 0x35c6320d 0x33d2c423 0x33d2b15b 0x33cae4dd 0x33cae3a5 0x356aebc9 0x356aea91 0x357425a1 0x32afec1d 0x32afead8
user time in thread: 3.892466 seconds
system time in thread: 0.000000 seconds
thread 0x2f567 TH_WAIT 0
thread priority: 31
thread sched flags: none
kernel cont 801aac09
user 0x35c73570 0x33d30671 0x32afec1d 0x32afead8
user time in thread: 0.294812 seconds
system time in thread: 0.000000 seconds
thread 0x37423 TH_WAIT 0
thread priority: 47
thread sched flags: none
kernel cont 8000f401
user 0x35c63010 0x35c6320d 0x34ac3cf9 0x31c79bcd 0x32afec1d 0x32afead8
user time in thread: 0.014877 seconds
system time in thread: 0.000000 seconds
thread 0x3b204 TH_WAIT 0
thread priority: 31
thread sched flags: none
kernel cont 8000f401
user 0x35c63010 0x35c6320d 0x33d2c423 0x33d2b15b 0x33cae4dd 0x33cae3a5 0x356a2b85 0x356c7b5f 0x33a84a6b 0x356aea91 0x357425a1 0x32afec1d 0x32afead8
user time in thread: 0.087839 seconds
system time in thread: 0.000000 seconds
thread 0x3d554 TH_WAIT 0x87024e80
thread priority: 33
thread sched flags: none
kernel cont 801dc8a1
user 0x35c73cd4 0x32af9311 0x32af90a4
user time in thread: 0.000450 seconds
system time in thread: 0.000000 seconds
最佳答案
First, why is it that SpringBoard is simply hanging when my code does something wrong, rather than crashing
代码可能会以多种方式出现异常,我猜测您的代码只是使 Springboard 的主线程陷入僵局。
我不做越狱开发,所以对这些崩溃日志不太熟悉。这是我根据数据的猜测
这可能是挂起的线程:
thread 0x2f43e TH_WAIT 0
thread priority: 22
thread sched flags: none
kernel cont 8000f401
user 0x35c63010 0x35c6320d 0x376818cb 0x376802f7 0x376809ad 0x3767ed03 0x3767ebcd 0x36dc5bf9 0x36dc574d 0x33d5aab3 0x33cb5680 0x36dbc73d 0x3f21c4 0x33cb7803 0x3572d50f 0x33d24577 0x33cb00cf 0x356a13fb 0x36dbd7cb 0x36dbd6f9 0x36dc7183 0x376723e1 0x33d2c553 0x33d2c4f5 0x33d2b343 0x33cae4dd 0x33cae3a5 0x30532fcd 0x3712f743 0xf9a33 0xf9074
user time in thread: 393.531235 seconds
system time in thread: 0.000000 seconds
包含十六进制地址列表的 user
部分 (0x35c63010 0x35c6320d 0x376818cb ...
) 可能是该线程的调用堆栈。
现在您需要对堆栈进行符号化。为此,您将需要符号。您将使用命令行工具 atos
来符号化每个地址。请特别注意 atos
的以下选项(man atos
了解更多信息):
-o symbol_file # debugging information output by the compiler this may be a dSYM or the binary itself depending on who you saved symbol information
-l load address # the base address in the process space at which your library is loaded into the springboard process
Also a list of addresses you wish to symbolicate
Usage:
atos -o my.o -l 0xba5eadd 0x37af10a0 0x37af1aaf
通过上面的 atos
示例,我们将对地址 0x37af10a0
和 0x37af1aaf
进行符号化,其符号为原始二进制。 my.o 库将加载到崩溃进程的基址 0x37af10a0
。
那么如何找到基地址呢?后跟唯一标识符的地址列表看起来像加载到进程中的库列表及其各自的基地址。
Process 4904 binary images:
0xf6000 <7506c20d86da3f1dbe9bf38f8bda253d>
0x386000 <cf2cce379dcd3a4c970e3196b908b0b6>
0x3cd000 <30381ec9e24c3c289f447bf428bda2c1>
....
但是,根据调用堆栈数据和二进制图像数据,似乎缺少数据或者我只是缺少一些东西。因为与加载在那里的库相比,前几个地址相当高。前几个地址是:0x35c63010 0x35c6320d ...
您可以尝试的是 atos -o yourlib 0x35c63010 0x35c6320d
。取决于你的库是如何加载的,它可能会工作,因为它是如何加载到地址空间的。
关于ios - 如何调试 "watchdog timeout"崩溃日志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9057528/
IO 设备如何知道属于它的内存中的值在memory mapped IO 中发生了变化? ? 例如,假设内存地址 0 专用于保存 VGA 设备的背景颜色。当我们更改 memory[0] 中的值时,VGA
我目前正在开发一个使用Facebook sdk登录(通过FBLoginView)的iOS应用。 一切正常,除了那些拥有较旧版本的facebook的人。 当他们按下“使用Facebook登录”按钮时,他
假设我有: this - is an - example - with some - dashesNSRange将使用`rangeOfString:@“-”拾取“-”的第一个实例,但是如果我只想要最后
Card.io SDK提供以下详细信息: 卡号,有效期,月份,年份,CVV和邮政编码。 如何从此SDK获取国家名称。 - (void)userDidProvideCreditCardInfo:(Car
iOS 应用程序如何从网络服务下载图片并在安装过程中将它们安装到用户的 iOS 设备上?可能吗? 最佳答案 您无法控制应用在用户设备上的安装,因此无法在安装过程中下载其他数据。 只需在安装后首次启动应
我曾经开发过一款企业版 iOS 产品,我们公司曾将其出售给大型企业,供他们的员工使用。 该应用程序通过 AppStore 提供,企业用户获得了公司特定的配置文件(包含应用程序配置文件)以启用他们有权使
我正在尝试将 Card.io SDK 集成到我的 iOS 应用程序中。我想为 CardIO ui 做一个简单的本地化,如更改取消按钮标题或“在此保留信用卡”提示文本。 我在 github 上找到了这个
我正在使用 CardIOView 和 CardIOViewDelegate 类,没有可以设置为 YES 的 BOOL 来扫描 collectCardholderName。我可以看到它在 CardIOP
我有一个集成了通话工具包的 voip 应用程序。每次我从我的 voip 应用程序调用时,都会在 native 电话应用程序中创建一个新的最近通话记录。我在 voip 应用程序中也有自定义联系人(电话应
iOS 应用程序如何知道应用程序打开时屏幕上是否已经有键盘?应用程序运行后,它可以接收键盘显示/隐藏通知。但是,如果应用程序在分屏模式下作为辅助应用程序打开,而主应用程序已经显示键盘,则辅助应用程序不
我在模拟器中收到以下错误: ImageIO: CGImageReadSessionGetCachedImageBlockData *** CGImageReadSessionGetCachedIm
如 Apple 文档所示,可以通过 EAAccessory Framework 与经过认证的配件(由 Apple 认证)进行通信。但是我有点困惑,因为一些帖子告诉我它也可以通过 CoreBluetoo
尽管现在的调试器已经很不错了,但有时找出应用程序中正在发生的事情的最好方法仍然是古老的 NSLog。当您连接到计算机时,这样做很容易; Xcode 会帮助弹出日志查看器面板,然后就可以了。当您不在办公
在我的 iOS 应用程序中,我定义了一些兴趣点。其中一些有一个 Kontakt.io 信标的名称,它绑定(bind)到一个特定的 PoI(我的意思是通常贴在信标标签上的名称)。现在我想在附近发现信标,
我正在为警报提示创建一个 trigger.io 插件。尝试从警报提示返回数据。这是我的代码: // Prompt + (void)show_prompt:(ForgeTask*)task{
您好,我是 Apple iOS 的新手。我阅读并搜索了很多关于推送通知的文章,但我没有发现任何关于 APNS 从 io4 到 ios 6 的新更新的信息。任何人都可以向我提供 APNS 如何在 ios
UITabBar 的高度似乎在 iOS 7 和 8/9/10/11 之间发生了变化。我发布这个问题是为了让其他人轻松找到答案。 那么:在 iPhone 和 iPad 上的 iOS 8/9/10/11
我想我可以针对不同的 iOS 版本使用不同的 Storyboard。 由于 UI 的差异,我将创建下一个 Storyboard: Main_iPhone.storyboard Main_iPad.st
我正在写一些东西,我将使用设备的 iTunes 库中的一部分音轨来覆盖 2 个视频的组合,例如: AVMutableComposition* mixComposition = [[AVMutableC
我创建了一个简单的 iOS 程序,可以顺利编译并在 iPad 模拟器上运行良好。当我告诉 XCode 4 使用我连接的 iPad 设备时,无法编译相同的程序。问题似乎是当我尝试使用附加的 iPad 时
我是一名优秀的程序员,十分优秀!