无论如何都要为iPhone应用程序实现一个全局异常处理程序,以便异常,而不是静默地崩溃应用程序,可以允许某种消息?
我可以理解,如果它不可行,因为程序可能处于不一致的状态,但至少告诉用户"抱歉 - 出错了!"真是太好了.
谢谢!
我刚刚在AppStore上发布了一个带有Crittercism崩溃报告的应用程序,而且我收到了很多与SIGSEGV错误有关的崩溃报告.Crittercism给了我一个StackTrace和一些关于使用统计信息的方便细节,但是,我仍然被这些符号化的堆栈跟踪所迷惑.关于这种事情我总体上有几个问题 -
堆栈跟踪中的许多类和方法甚至都没有在我的应用程序中使用(据我所知),这使我相信这些崩溃是由Apple的私有API引起的.看一下这个问题底部附近的Stack Trace. 如果崩溃报告中的所有方法和类都没有直接在我的代码中实现,我怎么能告诉我的应用程序崩溃了什么?
+坠毁线程中每行末尾带有数字的符号代表什么?
有关SIGSEGV崩溃问题的StackOverflow上的大多数Q/A表示它们是由内存泄漏或问题引起的,但是 如果我在iOS项目中使用ARC,如何因内存问题导致崩溃?ARC不应该为我管理所有这些事情吗?
如果我无法复制错误/崩溃,该怎么办?
有没有办法真正读取 StackTrace?有什么一般的东西有助于理解正在发生的事情吗?
以下是Crittercism主线程崩溃报告中的StackTrace,该问题涉及:
Thread: Unknown Name (Crashed)
0 UIKit 0x37307a22 -[UIView(CALayerDelegate) actionForLayer:forKey:] + 138
1 QuartzCore 0x38fdfff7 -[CALayer actionForKey:] + 75
2 QuartzCore 0x38fdffa7 _ZL12actionForKeyP7CALayerPN2CA11TransactionEP8NSString + 59
3 QuartzCore 0x38fdfe93 _ZN2CA5Layer12begin_changeEPNS_11TransactionEjRP11objc_object + 131
4 QuartzCore 0x38fdab87 _ZN2CA5Layer6setterEj12_CAValueTypePKv + 183
5 QuartzCore 0x39007057 -[CALayer setBackgroundColor:] + 35
6 UIKit 0x3731ef51 -[UIView(Internal) _setBackgroundCGColor:withSystemColorName:] + 1021
7 APP NAME 0x000a301d 0x00086000 + 118813
8 libdispatch.dylib 0x3962511f …Run Code Online (Sandbox Code Playgroud) 这不是问题,因为我已经找到了解决方法.我正在发布它,以便其他人可以利用我花在它上面的时间,并使用我建议的解决方法.
我有一些奇怪的崩溃报告 - 一行重复多次:
...
0x190e08000 - 0x190e49fff Notes arm64 <f45c09ce977b3282ab0e879252dfebee> /System/Library/PrivateFrameworks/Notes.framework/Notes
0x190f9c000 - 0x190fa6fff NotificationsUI arm64 <73dcb247ed183ce7bb330d7bb55f93bd> /System/Library/PrivateFrameworks/NotificationsUI.framework/NotificationsUI
0x190fa8000 - 0x190faafff OAuth arm64 <c2658cb3208b342dbe1e91cea30ebdd5> /System/Library/PrivateFrameworks/OAuth.framework/OAuth
0x191900000 - 0x191903fff ParsecSubscriptionServiceSupport arm64 <c70467637c9332c7b0be897200c9ccb1> /System/Library/PrivateFrameworks/ParsecSubscriptionServiceSupport.framework/ParsecSubscriptionServiceSupport
0x191900000 - 0x191903fff ParsecSubscriptionServiceSupport arm64 <c70467637c9332c7b0be897200c9ccb1> /System/Library/PrivateFrameworks/ParsecSubscriptionServiceSupport.framework/ParsecSubscriptionServiceSupport
0x191900000 - 0x191903fff ParsecSubscriptionServiceSupport arm64 <c70467637c9332c7b0be897200c9ccb1> /System/Library/PrivateFrameworks/ParsecSubscriptionServiceSupport.framework/ParsecSubscriptionServiceSupport
0x191900000 - 0x191903fff ParsecSubscriptionServiceSupport arm64 <c70467637c9332c7b0be897200c9ccb1> /System/Library/PrivateFrameworks/ParsecSubscriptionServiceSupport.framework/ParsecSubscriptionServiceSupport
0x191900000 - 0x191903fff ParsecSubscriptionServiceSupport arm64 <c70467637c9332c7b0be897200c9ccb1> /System/Library/PrivateFrameworks/ParsecSubscriptionServiceSupport.framework/ParsecSubscriptionServiceSupport
0x191900000 - 0x191903fff ParsecSubscriptionServiceSupport arm64 <c70467637c9332c7b0be897200c9ccb1> /System/Library/PrivateFrameworks/ParsecSubscriptionServiceSupport.framework/ParsecSubscriptionServiceSupport
0x191900000 - 0x191903fff ParsecSubscriptionServiceSupport arm64 <c70467637c9332c7b0be897200c9ccb1> /System/Library/PrivateFrameworks/ParsecSubscriptionServiceSupport.framework/ParsecSubscriptionServiceSupport
0x191900000 - 0x191903fff …Run Code Online (Sandbox Code Playgroud) 我以前没有真正使用崩溃日志,但对我来说崩溃似乎没有象征意义.我无法找到应用程序崩溃的位置以及原因.另外,当我在项目中打开堆栈跟踪时,没有任何内容突出显示,我无法分辨它在文件中崩溃的哪一行.我的问题是:有没有办法在组织者中象征所有这些崩溃,还是必须通过终端来完成?
谢谢.
我已经使用Crashlytics几年了(现在当然是Fabric),并且最近对Google Firebase的更新很感兴趣.
有没有人有机会同时使用这两者,如果是这样的话......你的印象是什么?你喜欢一个吗?为什么?
预先感谢您提供任何信息,提示或一般观察.
周末愉快.:-)
我一直在AppStore中的应用程序中遇到这些崩溃.CrashReport总是如下所示:
Incident Identifier: 986486D7-F013-4102-B9E3-84F923223914
CrashReporter Key: [TODO]
Hardware Model: iPhone4,1
Process: MyApp [57885]
Path: /Users/USER/MyApp.app/MyApp
Identifier: de.myapp.iphone
Version: 12475
Code Type: ARM
Parent Process: launchd [1]
Date/Time: 2012-12-20 15:48:53 +0000
OS Version: iPhone OS 6.0.1 (10A523)
Report Version: 104
Exception Type: SIGTRAP
Exception Codes: #0 at 0x3abd62be
Crashed Thread: 0
Thread 0 Crashed:
0 CoreFoundation 0x363582be CFRelease + 18
1 WebCore 0x383de395 WebCore::stopSharedTimer() + 33
2 WebCore 0x38433515 WebCore::TimerBase::~TimerBase() + 45
3 WebCore 0x3846003b WebCore::Document::~Document() + 2751
4 WebCore 0x3845f56d …Run Code Online (Sandbox Code Playgroud) 我是否最终失明或者没有明显的方法可以通过Google Firebase Web控制台删除Firebase崩溃报告?我的Android应用程序成功记录了报告,但现在我有大量的"开发崩溃",这些都在我的控制台中占用了很多我的观点.这使得很难找到真正的beta用户崩溃(特别是因为我似乎无法按日期/时间过滤崩溃).任何帮助深表感谢.
android crash-reports firebase firebase-crash-reporting firebase-console
在我的应用程序的几乎每个 Play 商店版本中,我都会收到奇怪的崩溃报告,指出某些资源文件丢失。反编译APK显示资源在那里。崩溃始终是由 1 台设备上的 1 位用户造成的。
令人费解的是,设备型号名称是“Mainline”,制造商是“Google”。在 Google 上环顾四周,没有型号名称为“Mainline”的设备,但有一个名为“Mainline”的项目。有谁知道导致这些崩溃的原因是什么?谷歌正在进行一些奇怪的测试吗?
我们一直看到谷歌播放的崩溃报告特定于三星S9(starqlesq)和S9 +(star2qlesq),两者都运行Android 8.0.0:
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR)
backtrace:
#00 pc 0000000000a51278 /vendor/lib64/libllvm-glnext.so (_ZN13ShaderObjects17loadProgramBinaryEP15CompilerContextPvmP23QGLC_LINKPROGRAM_RESULT+1396)
#01 pc 000000000099b500 /vendor/lib64/libllvm-glnext.so (_ZN15CompilerContext17loadProgramBinaryEPvmP23QGLC_LINKPROGRAM_RESULT+160)
#02 pc 0000000000a6e110 /vendor/lib64/libllvm-glnext.so (_Z21QGLCLoadProgramBinaryPvS_mP23QGLC_LINKPROGRAM_RESULT+88)
#03 pc 00000000001a501c /vendor/lib64/egl/libGLESv2_adreno.so (_ZN17EsxShaderCompiler21LoadProgramBinaryBlobEP10EsxContextP10EsxProgramPKvmP10EsxInfoLog+256)
查看上面的堆栈跟踪,崩溃似乎是在OpenGL系统代码中.
这很奇怪,因为我们将集成的崩溃报告解决方案(Microsoft App Center SDK)和其他崩溃报告发送到App Center.
我们的应用程序大量使用WebView,我现在理解使用Chrome,在一个单独的过程中运行.
因此,我的问题是:
WebView相关崩溃的事实吗?crash-reports ×10
ios ×6
android ×3
crash ×3
xcode ×3
firebase ×2
crashlytics ×1
ios5 ×1
ios6 ×1
ios9 ×1
iphone ×1
macos ×1
symbolicate ×1
webview ×1
xcode8 ×1