我正在使用一个有点不可靠的(Qt/windows)应用程序,部分是由第三方为我们编写的(只是试图将责任转移到那里).他们的最新版本更稳定.有点.我们收到的崩溃报告越来越少,但是我们收到很多关于崩溃的报告并且永远不会回来.情况多种多样,由于我们可以收集的信息很少,我们无法重现这些问题.
理想情况下,我想创建某种看门狗,注意到应用程序已锁定,并提供向我们发送崩溃报告.好主意,但有问题:
看门狗如何知道该过程已挂起?据推测,我们会对应用程序进行检测,以便定期对看门狗说"一切正常",但是我们在哪里放置它以保证频繁发生,但不太可能出现在应用程序结束时的代码路径上锁定.
发生崩溃时看门狗应该报告什么信息?Windows有一个不错的调试api,所以我相信所有有趣的数据都是可访问的,但我不确定什么对于追踪问题有用.
好的,所以我收到了我的一个应用程序的崩溃报告,但我发誓我100%困惑.
这就是它的"核心"部分:
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000000
VM Regions Near 0:
-->
__TEXT 0000000100000000-0000000100015000 [ 84K] r-x/rwx SM=COW /Applications/MY_APP/Contents/MacOS/MY_APP
Application Specific Information:
objc[337]: garbage collection is ON
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libsystem_c.dylib 0x00007fff90128650 strlen + 16
1 MY_BUNDLE_ID 0x0000000100008f12 0x100000000 + 36626
2 MY_BUNDLE_ID 0x000000010000b435 0x100000000 + 46133
3 MY_BUNDLE_ID 0x0000000100003c90 0x100000000 + 15504
4 com.apple.CoreFoundation 0x00007fff9065147a _CFXNotificationPost + 2554
5 com.apple.Foundation 0x00007fff8e5fe846 -[NSNotificationCenter postNotificationName:object:userInfo:] + 64 …Run Code Online (Sandbox Code Playgroud) 我正在调查我们的一个生产系统上的JVM崩溃,下面的hs_err_pid日志文件片段中的以下内存值代表什么?
Heap
par new generation total 1258624K, used 955445K [0x00000005c0000000, 0x00000006155b0000, 0x000000066aaa0000)
eden space 1118784K, 73% used [0x00000005c0000000, 0x00000005f1e52598, 0x0000000604490000)
from space 139840K, 98% used [0x000000060cd20000, 0x00000006153db100, 0x00000006155b0000)
to space 139840K, 0% used [0x0000000604490000, 0x0000000604490000, 0x000000060cd20000)
tenured generation total 2796224K, used 1745107K [0x000000066aaa0000, 0x0000000715550000, 0x00000007c0000000)
the space 2796224K, 62% used [0x000000066aaa0000, 0x00000006d52d4d90, 0x00000006c2e0c400, 0x0000000715550000)
compacting perm gen total 482944K, used 482943K [0x00000007c0000000, 0x00000007dd7a0000, 0x0000000800000000)
the space 482944K, 99% used [0x00000007c0000000, 0x00000007dd79fff0, 0x00000007dd7a0000, 0x00000007dd7a0000)
No shared spaces configured.
Run Code Online (Sandbox Code Playgroud)
我关注的是"压缩的perm gen"用法:它是指最大分配的perm gen堆使用的百分比,还是最大堆使用的百分比,还是其他什么?提供的百分比似乎是使用/总计的一个除法,这是分配的perm …
我想我花了一整天的时间,仍然不知道问题是什么.
每次项目构建时我得到的错误是"不理解符号文件:/Users/natecraft/Library/Developer/Xcode/DerivedData/TestingCrashes-dytajkglkhaghgficdgpolnmndnr/Build/Products/Debug-iphoneos/TestingCrashes.app.dSYM"
在这里的崩溃指南之后,我手动上传了dSYM文件,其中包含...解析符号--path ="",我相信这些符号有效.我如何验证?我在文档中看到了这一点"如果您设置了自动上传,请通过查看报告导航器下的日志来验证上传是否有效." 但找不到"报告导航器".
我尝试了很多实际运行脚本的变体,最近这个答案来自这里.但没有什么能有所作为.我唯一可以想到的是我的示例TestingCrashes项目和我正在关注的Parse指南的不同之处在于我正在使用CocoaPods和XCode 7.1
提前致谢
我一直收到一个测试用户对带有标题的Swift项目的崩溃日志:
例外类型:SIGTRAP
这是crashlog的相关部分:
Hardware Model: iPad4,2
Process: Jam Session [204]
Path: /var/mobile/Containers/Bundle/Application/FADFF299-ABDC-46AA-8B77-BF4F77301DBF/Jam Session.app/Jam Session
Identifier: it.info.music.jamsession
Version: 1.0 (1.0.8)
Code Type: ARM-64
Parent Process: ??? [1]
Date/Time: 2016-02-26 11:06:46 +0000
OS Version: iPhone OS 9.2.1 (13D15)
Report Version: 104
Exception Type: SIGTRAP
Exception Codes: #0 at 0x10002971c
Crashed Thread: 0
Thread 0 Crashed:
0 Jam Session 0x000000010002971c 0x10000c000 + 120604
1 Jam Session 0x0000000100023ee4 0x10000c000 + 98020
2 UIKit 0x0000000187af931c 0x187794000 + 3560220
3 UIKit 0x0000000187af9484 0x187794000 + 3560580
4 …Run Code Online (Sandbox Code Playgroud) 我正在构建一个 android 库,我计划将其集成到许多 3rd 方应用程序(不属于我)中。
所以,我试图找出一种方法来找出是否有任何 3rd 方应用程序由于我的库中的代码而崩溃。有什么办法可以找出来吗?
我正在寻找 Crashlytics 来实现相同的目标。但是,据我所知,Crashlytics 只能将崩溃分析提供给应用程序所有者,对吗?有没有办法在没有第三方应用程序干预的情况下收集崩溃信息?
谢谢。
编辑:这不是将 Crashlytics 集成到库项目的副本,因为我希望 Crashlytics 成为一个 android 库的一部分,该库将位于多个 android 应用程序上,但我想单独收到通知 - 而不是来自正在安装我的 android 的应用程序图书馆。
android crash-reports android-library crashlytics crashlytics-android
崩溃日志中的Backtrace如下所示:
6 locationd 0x00000001000bb24c 0x10006c000 + 324172
Run Code Online (Sandbox Code Playgroud)
好像0x00000001000bb24c是函数地址,但第四列是什么意思?
似乎第四列的第一部分是图像基地址.第二部分是什么意思?
从这个问题,有人认为第四列作为基地址和偏移地址,但似乎总和不等于第三列!
我在将我的项目与 Google Firebase 分析集成时遇到了一些问题。我已按照所有说明进行操作,集成似乎已完成,因为我确实正确获取了崩溃报告,但分析页面为空。
我的 build.gradle 内容:
compile 'com.google.firebase:firebase-core:10.2.0'
compile 'com.google.firebase:firebase-crash:10.2.0'
compile 'com.google.android.gms:play-services:10.2.0'
compile 'com.google.android.gms:play-services-wearable:10.2.0'
Run Code Online (Sandbox Code Playgroud)
日志似乎建议它发送报告。
I/FirebaseInitProvider: FirebaseApp initialization successful
I/FA: App measurement is starting up, version: 10298
I/FA: To enable debug logging run: adb shell setprop log.tag.FA VERBOSE
I/FA: To enable faster debug mode event logging run:
adb shell setprop debug.firebase.analytics.app
D/FA: Debug-level message logging enabled
D/FA: Connected to remote service
D/FA: Logging event (FE): select_content, Bundle[{item_name=Demo mode entered, _o=app, _sc=SeatsActivity, _si=-6324821531545085450, content_type=image, item_id=Demo}]
D/FA: Connected to remote service …Run Code Online (Sandbox Code Playgroud) 根据我的理解,当iOS应用程序崩溃时,系统会创建一个可以通过XCode访问的.crash文件.是否可以从应用程序本身以编程方式读取此文件?
我的目的是将此崩溃日志(如果存在)发送到服务器,以便我们可以在无需用户干预的情况下分析日志.有几个崩溃报告服务(例如bugsense,crashlytics)能够做到这一点,所以我假设应该可以实现自定义实现?
干杯!
使用自定义崩溃报告系统(如专门针对要求用户在iPhone崩溃后发送崩溃日志的系统)发送日志,应用程序需要重新启动.为什么?是否有可能在自定义异常处理期间发送它?或者是否有崩溃报告系统,不需要重新启动应用程序?
crash-reports ×10
ios ×5
android ×2
crash-dumps ×2
analytics ×1
cocoa ×1
crash ×1
crashlytics ×1
firebase ×1
java ×1
jvm ×1
jvm-crash ×1
macos ×1
objective-c ×1
restart ×1
swift ×1
watchdog ×1
xcode ×1