容器应用程序崩溃:Crashlytics需要更多信息

时间:2017-09-11 07:55:21

标签: ios crashlytics google-fabric

我与之合作的开发团队制作了一个容器应用程序,用于提供客户端的移动网站。我们可以看到容器应用程序在iOS 10上崩溃,但没有太多关于问题原因的信息。除了Webkit和JS Core可能出现的问题之外,堆栈跟踪并没有太多指出:

Crashed: com.apple.main-thread
0  WebKit                         0x19673fddc API::Object::ref() + 2
1  WebKit                         0x1968bb35c WebKit::WebPageProxy::didStartProvisionalLoadForFrame(unsigned long long, unsigned long long, WTF::String const&, WTF::String const&, WebKit::UserData const&) + 192
2  WebKit                         0x1968d621c void IPC::handleMessage<Messages::WebPageProxy::DidStartProvisionalLoadForFrame, WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(unsigned long long, unsigned long long, WTF::String const&, WTF::String const&, WebKit::UserData const&)>(IPC::MessageDecoder&, WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(unsigned long long, unsigned long long, WTF::String const&, WTF::String const&, WebKit::UserData const&)) + 100
3  WebKit                         0x1967941d0 IPC::MessageReceiverMap::dispatchMessage(IPC::Connection&, IPC::MessageDecoder&) + 120
4  WebKit                         0x196917614 WebKit::WebProcessProxy::didReceiveMessage(IPC::Connection&, IPC::MessageDecoder&) + 32
5  WebKit                         0x19675d3e8 IPC::Connection::dispatchMessage(std::__1::unique_ptr<IPC::MessageDecoder, std::__1::default_delete<IPC::MessageDecoder> >) + 160
6  WebKit                         0x19675fa00 IPC::Connection::dispatchOneMessage() + 204
7  JavaScriptCore                 0x191b4c834 WTF::RunLoop::performWork() + 172
8  JavaScriptCore                 0x191b4ca60 WTF::RunLoop::performWork(void*) + 36
9  CoreFoundation                 0x18d332b5c __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24
10 CoreFoundation                 0x18d3324a4 __CFRunLoopDoSources0 + 524
11 CoreFoundation                 0x18d3300a4 __CFRunLoopRun + 804
12 CoreFoundation                 0x18d25e2b8 CFRunLoopRunSpecific + 444
13 GraphicsServices               0x18ed12198 GSEventRunModal + 180
14 UIKit                          0x1932a57fc -[UIApplication _run] + 684
15 UIKit                          0x1932a0534 UIApplicationMain + 208
16 Betfred                        0x10005c250 main (main.m:16)
17 libdispatch.dylib              0x18c2415b8 (Missing)

没有人能够让应用程序可靠地崩溃(包括全天候使用它的测试团队),据我们所知,移动网站没有问题。

我被要求调查这个问题,但我有点不知所措,因为如果我不能一直让它破裂,我无法诊断和修复。

我们有什么方法可以从Crashlytics获得有关此次崩溃原因的更多信息吗?

1 个答案:

答案 0 :(得分:2)

来自Fabric的Mike和像这样的崩溃很难追查。您需要发布应用的新版本,但有三种不同的方式可以获取其他信息。

1)添加custom keys,例如跟踪正在加载的页面或正在点击的端点,可以提供其他上下文:

- (void)setObjectValue:(id)value forKey:(NSString *)key;

// calls -description on value, perfect for NSStrings!
- (void)setIntValue:(int)value forKey:(NSString *)key;

- (void)setBoolValue:(BOOL)value forKey:(NSString *)key;

- (void)setFloatValue:(float)value forKey:(NSString *)key;

2)添加custom logs作为面包屑的形式,以便更容易重现用户在崩溃前所做的步骤:

CLS_LOG(@"User clicked on menu %@", attributesDict);

3)添加user identifiers

[CrashlyticsKit setUserIdentifier:@"123456789"];
[CrashlyticsKit setUserEmail:@"person@domain.com"];
[CrashlyticsKit setUserName:@"Awesome AppUser"];

当所有其他方法都失败时,与用户联系以获取其他信息也可以帮助追踪它。