我正在做一个适用于安卓和IOS的应用程序。当我在应用程序中大量导航时,会出现随机异常,应用程序就会崩溃。
我怎么知道问题出在哪里?
这个应用程序有点复杂,难以解释:
它有两个窗口,第一个窗口用于仅处于纵向模式的“主页”视图,当我单击转到另一个视图时,我关闭第一个窗口,打开另一个窗口,并向此窗口添加一个包含内容的视图。内容视图使用不同的url加载相同的web视图。
应用程序加载ok,我可以导航到不同的视图和窗口ok。但是当我浏览了很多次之后,我终于有了一个EXC_BAC_ACCESS和KERN_INVALID_ADDRESS
这只发生在设备上(在模拟器上,它工作得很好)与iPad操作系统5.1.1和操作系统7.0.2。
这是线程崩溃的日志:
Incident Identifier: 1A3E94A0-E6FC-4BFF-BB3B-7651D66664DE
CrashReporter Key: d4422d11c83ca9acf2212996b20dd1078f00f36c
Hardware Model: iPad3,3
Process: Appname [16747]
Path: /var/mobile/Applications/1BACB160-AED8-4F5F-A599-4F7F1F4A4DC4/Appname.app/Appname
Identifier: Appname
Version: ??? (???)
Code Type: ARM (Native)
Parent Process: launchd [1]
Date/Time: 2013-10-31 11:56:58.680 +0100
OS Version: iPhone OS 5.1.1 (9B206)
Report Version: 104
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00000000
Crashed Thread: 0
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 libicucore.A.dylib 0x37953fb2 utext_setNativeIndex + 122
1 libicucore.A.dylib 0x379542a6 icu::RuleBasedBreakIterator::following(int) + 246
2 WebKit 0x35f20b2c -[NSString(WebStringDrawing) __web_drawInRect:withFont:ellipsis:alignment:letterSpacing:lineSpacing:includeEmoji:truncationRect:measureOnly:renderedStringOut:drawUnderline:] + 2176
3 WebKit 0x35e99078 -[NSString(WebStringDrawing) __web_drawInRect:withFont:ellipsis:alignment:letterSpacing:lineSpacing:includeEmoji:truncationRect:measureOnly:renderedStringOut:] + 108
4 WebKit 0x35e98ffc -[NSString(WebStringDrawing) __web_drawInRect:withFont:ellipsis:alignment:letterSpacing:lineSpacing:includeEmoji:truncationRect:measureOnly:] + 100
5 WebKit 0x35e98f88 -[NSString(WebStringDrawing) _web_drawInRect:withFont:ellipsis:alignment:lineSpacing:includeEmoji:truncationRect:measureOnly:] + 100
6 WebKit 0x35e98f14 -[NSString(WebStringDrawing) _web_sizeInRect:withFont:ellipsis:lineSpacing:] + 80
7 UIKit 0x34fba65c -[NSString(UIStringDrawing) sizeWithFont:constrainedToSize:lineBreakMode:lineSpacing:] + 108
8 UIKit 0x3512ee0e -[NSString(UIStringDrawing) sizeWithFont:constrainedToSize:lineBreakMode:] + 46
9 Appname 0x0014528c -[TiUILabel sizeForFont:] (TiUILabel.m:57)
10 Appname 0x0014537a -[TiUILabel contentWidthForWidth:] (TiUILabel.m:69)
11 Appname 0x001449bc -[TiUILabelProxy contentWidthForWidth:] (TiUILabelProxy.m:17)
12 Appname 0x00116fb4 -[TiViewProxy autoWidthForSize:] (TiViewProxy.m:756)
13 Appname 0x00120dbc -[TiViewProxy computeChildSandbox:withBounds:] (TiViewProxy.m:2543)
14 Appname 0x0011fbb8 -[TiViewProxy measureChildren:] (TiViewProxy.m:2352)
15 Appname 0x00121e36 -[TiViewProxy layoutChildren:] (TiViewProxy.m:2818)
16 Appname 0x0011dd9a -[TiViewProxy refreshView:] (TiViewProxy.m:2061)
17 Appname 0x0011f25c -[TiViewProxy layoutChildrenIfNeeded] (TiViewProxy.m:2264)
18 Appname 0x001d5ba0 +[TiLayoutQueue layoutProxy:] (TiLayoutQueue.m:79)
19 Appname 0x001d59b0 performLayoutRefresh (TiLayoutQueue.m:46)
20 CoreFoundation 0x32a5fa2c __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 8
21 CoreFoundation 0x32a5f692 __CFRunLoopDoTimer + 358
22 CoreFoundation 0x32a5e268 __CFRunLoopRun + 1200
23 CoreFoundation 0x329e149e CFRunLoopRunSpecific + 294
24 CoreFoundation 0x329e1366 CFRunLoopRunInMode + 98
25 GraphicsServices 0x32b2e432 GSEventRunModal + 130
26 UIKit 0x34fc0cce UIApplicationMain + 1074
27 Appname 0x000b8c34 main (main.m:36)
28 Appname 0x000b8470 ___lldb_unnamed_function1$$Appname + 32
Thread 0 crashed with ARM Thread State:
r0: 0x00000000 r1: 0x00000000 r2: 0x00000000 r3: 0x00000000
r4: 0x0d65c6b0 r5: 0x0d65c690 r6: 0x00000000 r7: 0x2feabfac
r8: 0x00000003 r9: 0x2feabf6c r10: 0x00000003 r11: 0x08052950
ip: 0x00000000 sp: 0x2feabfa4 lr: 0x00000000 pc: 0x37953fb2
cpsr: 0x80000030我也有其他线程的日志和关于二进制图像的信息。如果有用,我可以粘贴它。
我如何才能知道问题的原因是什么?问题在哪里?
非常感谢
发布于 2014-09-09 16:35:15
最后,我认为这是webview组件的问题。我在每个视图中创建了一个web视图(我需要它来显示一些图表),当我返回到主视图时,我试图删除它。我认为问题在于你不能完全删除它,而且它需要很大的内存。
最后,我解决了这个问题,在app.js中创建一个网页视图,并在所有视图中使用它,更改url和维度。
https://stackoverflow.com/questions/19544264
复制相似问题