ios - 如何理解 EXC_BAC_ACCESS (SIGSEGV) KERN_INVALID_ADDRESS 日志?

标签 ios crash titanium exc-bad-access segmentation-fault

我正在为 Android 和 IOS 使用 Titanium 开发一个应用程序。当我在应用程序中进行大量导航时,出现随机异常并且应用程序崩溃。

我怎么知道哪里出了问题?

这个应用解释起来有点复杂:

它有两个窗口,第一个窗口用于“主页” View ,仅在纵向模式下,当我单击转到另一个 View 时,我关闭第一个窗口,打开另一个窗口并添加一个 View 此窗口的内容。内容 View 使用不同的 url 加载相同的 web View 。

应用程序加载正常,我可以正常浏览不同的 View 和窗口。但是当我导航很多次时,我终于有了一个 EXC_BAC_ACCESS (SIGSEGV) 和 KERN_INVALID_ADDRESS

这只发生在装有 iPad os 5.1.1 和 os 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

我还有其他线程的日志和有关二进制图像的信息。如果有用我可以粘贴。

我怎样才能知道问题的原因是什么以及问题出在哪里?

非常感谢

最佳答案

你得到 EXC_BAC_ACCESS 因为你试图访问从内存中删除的对象。它仅在您导航到许多窗口时在设备上发生,因为每个窗口都会占用一部分内存,并且当没有更多空间用于新窗口时,iOS 会清除您之前删除的旧对象。

您可以通过按 + + M 强制内存警告在模拟器上重现此问题。

要解决您的问题,您必须存储指向您希望稍后在某个全局字典中重新打开的窗口对象的变量。

关于ios - 如何理解 EXC_BAC_ACCESS (SIGSEGV) KERN_INVALID_ADDRESS 日志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19544264/

相关文章:

ios - YouTube 嵌入视频与 WKWebView 开始随机播放

iphone - 如何使用自定义 UIImage 作为 UITabBarItem 角标(Badge)?

android - 应用程序可处理大数组 “stops working”,但仍继续将日志消息打印到AndroidStudio

ios - Titanium 中的 TableViewRow 高度

javascript - Titanium.App.addEventListener 未触发,从不

ios - 由于使用社交登录,Apple 拒绝了我的应用

ios - 使用 monogame 构建默认 iOS 解决方案时出现错误消息

crash - Cordova 2.7.0中的InAppBrowser

objective-c - 是什么导致了这次崩溃?

javascript - Appcelerator : JSON. 解析不在套接字内执行任何操作