ios - 我不明白来自 BugSense/Mint 的这个 iOS 堆栈跟踪...我的代码实际上在哪里崩溃?

标签 ios objective-c iphone xcode crash

我的应用名为 Movies。我正在使用 Splunk Mint(以前称为 BugSense)来捕获崩溃报告。我最近更新到他们新的 4.0 SDK。这是今天的崩溃报告,我不明白。我的代码中究竟在哪一行发生了崩溃?

崩溃是:NSInvalidArgumentException *** -[NSPlaceholderString initWithString:]: nil argument

您会想到第 4 行?但我不知道 URLBlackListManager 到底是什么。或者它是第 0 行,MKSKProduct 内部崩溃(多年来我一直使用该代码来简化应用内购买),但为什么它会说它来自 核心基础?或者它是第 10 行,Movies 实际上是用我的代码调用的最后一行?

我不知道 SplunkNSURLConnectionSendSynchronousRequestReturningResponseError 是什么,他们的网站上没有任何信息。

我一直无法报告崩溃,但它在不同的设备上针对不同的人至少发生了 10 次。

我有点困惑...有人有什么想法吗?

0   CoreFoundation  -[MKSKProduct verifyReceiptOnComplete:onError:] (in Movies) (MKSKProduct.m:196) + 868307    
1   libobjc.A.dylib _mh_execute_header (in Movies) + 15567  
2   CoreFoundation  -[MKSKProduct verifyReceiptOnComplete:onError:] (in Movies) (MKSKProduct.m:190) + 868117    
3   Foundation  -[CollectionViewController collectionView:didSelectItemAtIndexPath:] (in Movies) (CollectionViewController.m:227) + 154361  
4   Movies  -[URLBlackListManager containsURL:] (in Movies) + 129   
5   Movies  SplunkNSURLConnectionSendSynchronousRequestReturningResponseError (in Movies) + 453 
6   Foundation  -[SettingsViewController tableView:didSelectRowAtIndexPath:] (in Movies) (SettingsViewController.m:278) + 292459    
7   Foundation  -[SettingsViewController tableView:didSelectRowAtIndexPath:] (in Movies) (SettingsViewController.m:270) + 292251    
8   Foundation  +[MKSKProduct connection:didFailWithError:] (in Movies) (MKSKProduct.m:299) 
9   Movies  -[iPhoneRSS initWithURL:andItemName:] (in Movies) (iPhoneRSS.m:39) + 871897 
10  Movies  -[CreateUsernameViewController submit:] (in Movies) (CreateUsernameViewController.m:123) + 572531   
11  UIKit   -[ImportViewController setUrlTextField:] (in Movies) (ImportViewController.m:34) + 262231   
12  UIKit   -[ImportViewController setInstructionsLabel:] (in Movies) (ImportViewController.m:32) + 262135  
13  UIKit   -[ImportViewController instructionsLabel] (in Movies) (ImportViewController.m:32) + 262097  
14  UIKit   __43-[CollectorsAdViewController openAppStore:]_block_invoke (in Movies) (CollectorsAdViewController.m:279) + 177975    
15  UIKit   -[ImportViewController ebaySearchWithCountry:andBarcode:] (in Movies) (ImportViewController.m:2464) + 260687    
16  UIKit   -[ImportViewController ebaySearchWithCountry:andBarcode:] (in Movies) (ImportViewController.m:2427) + 259873    
17  UIKit   -[ImportViewController importCollectorzData:] (in Movies) (ImportViewController.m:1488) + 239339    
18  UIKit   -[WishlistViewController tableView:commitEditingStyle:forRowAtIndexPath:] (in Movies) (WishlistViewController.m:1187) + 63725   
19  UIKit   -[WishlistViewController tableView:cellForRowAtIndexPath:] (in Movies) (WishlistViewController.m:929) + 57239   
20  CoreFoundation  -[MainViewController optionsTouched:] (in Movies) (MainViewController.m:687) + 651867   
21  CoreFoundation  -[MainViewController startActivityIndicator] (in Movies) (CGGeometry.h:294) + 649003    
22  CoreFoundation  -[MainViewController loadUp] (in Movies) (MainViewController.m:405) + 642847    
23  CoreFoundation  -[WishlistViewController themeSetup] (in Movies) (WishlistViewController.m:224) + 32527 
24  CoreFoundation  -[WishlistViewController loadDataOffline] (in Movies) (WishlistViewController.m:214) + 31987    
25  GraphicsServices    -[WishlistViewController loadUp] (in Movies) (WishlistViewController.m:412) + 38499 
26  UIKit   -[EditImageViewController viewWillAppear:] (in Movies) (EditImageViewController.m:102) + 450925 
27  Movies  main (in Movies) (main.m:16) + 891191   
28  libdyld.dylib   _mh_execute_header (in Movies) + 6839

这里是堆栈跟踪中第 0 行的 verifyReceiptOnComplete 代码...如果您在这里看到任何可能导致 nil NSString 崩溃的方法,请告诉我:

- (void) verifyReceiptOnComplete:(void (^)(void)) completionBlock
                         onError:(void (^)(NSError*)) errorBlock
{
  self.onReceiptVerificationSucceeded = completionBlock;
  self.onReceiptVerificationFailed = errorBlock;

  NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@/%@", OWN_SERVER, @"verifyProduct.php"]];

    NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url 
                                                            cachePolicy:NSURLRequestReloadIgnoringCacheData 
                                                        timeoutInterval:60];

    [theRequest setHTTPMethod:@"POST"];     
    [theRequest setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];

    NSString *receiptDataString = [self.receipt base64EncodedString];

    NSString *postData = [NSString stringWithFormat:@"receiptdata=%@", receiptDataString];

    NSString *length = [NSString stringWithFormat:@"%d", [postData length]];    
    [theRequest setValue:length forHTTPHeaderField:@"Content-Length"];  

    [theRequest setHTTPBody:[postData dataUsingEncoding:NSASCIIStringEncoding]];

  self.theConnection = [NSURLConnection connectionWithRequest:theRequest delegate:self];    
  [self.theConnection start];   
}

最佳答案

我自己偶然发现了这个错误,这是我发现的:

如果您使用 Cocoapods 安装 Splunk Mint Express,您会得到两个不同的 Pod:

$> pod search Splunk

-> SplunkMint (4.0.4)
   Usage, performance and crash monitoring for your iOS apps
   pod 'SplunkMint', '~> 4.0.4'
   - Homepage: https://mint.splunk.com/
   - Source:   download.splunk.com/misc/mint/SplunkMint-iOS.framework.zip
   - Versions: 4.0.4, 4.0.3, 4.0.2, 4.0.1 [master repo]


-> SplunkMint-iOS (4.0.21)
   Usage, performance and crash monitoring for your iOS apps
   pod 'SplunkMint-iOS', '~> 4.0.21'
   - Homepage: https://mint.splunk.com/
   - Source:   download.splunk.com/misc/mint/SplunkMint-iOS.framework.4.0.21.zip
   - Versions: 4.0.21, 4.0.17, 4.0.1 [master repo]

当我使用 SplunkMint 时,我遇到了同样的崩溃,但切换到 SplunkMint-iOS 后修复了它。我不知道这两个 Pod 之间有什么区别(我什至不必更改初始化 Mint 的代码)但我向 Splunk 提交了一个错误让他们知道。

如果我发现其他东西,我会编辑我的帖子,

希望对你有帮助

关于ios - 我不明白来自 BugSense/Mint 的这个 iOS 堆栈跟踪...我的代码实际上在哪里崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26163726/

相关文章:

ios - 在此设备上启用开发时遇到错误

ios - 在 TableView 或 Collection View 中删除与 IndexPath 关联的 CKRecord 的可靠方法是什么?

ios - 无法以编程方式在 swift 中设置 NSLayoutConstraint 乘数...“无法分配给此表达式的结果

iphone - 这里如何获取和修改一个像素值?

objective-c - NSView drawRect 干扰 subview ?

objective-c - 在 Objective-C 中设置文本字段的值

iphone - 在 iphone 中单击按钮时如何查看 tableview Controller

ios - animationDidStop 没有被调用?

ios - 快速画中画模式

iphone - 如何正确显示 UIViewController?