如何从 BugSense 符号化 iOS 崩溃报告?

发布于 2024-12-08 05:35:57 字数 1259 浏览 0 评论 0原文

我开始通过 BugSense 从我的 iOS 应用程序接收崩溃报告。我已将调试符号包含在我的应用程序中,并获取有关错误的信息,例如。 “* -[NSMutableArray objectAtIndex:]:索引 0 超出空数组的范围”以及堆栈跟踪,例如:

Full Stacktrace  

0   CoreFoundation  __exceptionPreprocess   114
1   libobjc.A.dylib objc_exception_throw    24
2   CoreFoundation  -[__NSArrayM objectAtIndex:]    184
3   Myapp   Myapp   738167
4   UIKit   -[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:]    662
5   UIKit   -[UITableView _userSelectRowAtPendingSelectionIndexPath:]   130
6   Foundation  __NSFireDelayedPerform  368
7   CoreFoundation  __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__   14
8   CoreFoundation  __CFRunLoopDoTimer  850
9   CoreFoundation  __CFRunLoopRun  1088
10  CoreFoundation  CFRunLoopRunSpecific    230
11  CoreFoundation  CFRunLoopRunInMode  58
12  GraphicsServices    GSEventRunModal 114
13  GraphicsServices    GSEventRun  62
14  UIKit   -[UIApplication _run]   404
15  UIKit   UIApplicationMain   670
16  Myap p  Myapp   11901
17  Myapp   Myapp   

但是,我想对报告进行符号化,以便我可以准确地指出 bug 所在的位置代码。我如何从 Bugsense 获取报告数据并执行此操作?有没有办法从 BugSense 下载“常规”崩溃报告并使用它,或者他们提供的数据是否足以以某种方式工作?我知道报告来自哪个版本的应用程序,所以我知道要针对哪些二进制文件进行符号化。

I am beginning to receive crash reports from my iOS app via BugSense. I have included the debug symbols in my app and an getting info on the errors, eg. "* -[NSMutableArray objectAtIndex:]: index 0 beyond bounds for empty array" and also stacktraces such as:

Full Stacktrace  

0   CoreFoundation  __exceptionPreprocess   114
1   libobjc.A.dylib objc_exception_throw    24
2   CoreFoundation  -[__NSArrayM objectAtIndex:]    184
3   Myapp   Myapp   738167
4   UIKit   -[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:]    662
5   UIKit   -[UITableView _userSelectRowAtPendingSelectionIndexPath:]   130
6   Foundation  __NSFireDelayedPerform  368
7   CoreFoundation  __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__   14
8   CoreFoundation  __CFRunLoopDoTimer  850
9   CoreFoundation  __CFRunLoopRun  1088
10  CoreFoundation  CFRunLoopRunSpecific    230
11  CoreFoundation  CFRunLoopRunInMode  58
12  GraphicsServices    GSEventRunModal 114
13  GraphicsServices    GSEventRun  62
14  UIKit   -[UIApplication _run]   404
15  UIKit   UIApplicationMain   670
16  Myap p  Myapp   11901
17  Myapp   Myapp   

However, I want to symbolicate the reports so that I can pinpoint exactly where the bugs are in my code. How can I take the report data from Bugsense and do this? Is there a way to download the "regular" crash report from BugSense and use that, or is the data they provide enough to work off of somehow? I know which version of the app that the reports are coming from so i know which binaries to symbolicate against.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

⊕婉儿 2024-12-15 05:35:57

BugSense 的工作原理是获取设备上的符号并将其发布到服务器上,其格式类似于您在崩溃日志中看到的格式。 BugSense 获取异常堆栈跟踪,如果找不到,则获取崩溃线程堆栈跟踪。由于多种原因,这并不总是完美的。

您发布的堆栈跟踪已部分符号化。 BugSense 似乎在获取您自己的代码中的符号时遇到问题。

如果您完全按照使用指南进行操作,则可能是框架本身的失败。 atos 应该可以帮助您发现代码中确切的方法调用。

免责声明:我为 BugSense-iOS.framework 编写了代码。

BugSense works by getting the symbols on the device and posting them on the server, in a format similar to what you see in a crash log. BugSense gets the exception stacktrace and when it can't find one, the crashed thread stacktrace. For a variety of reasons, this isn't always perfect.

The stacktrace that you posted is partially symbolicated. It looks like BugSense has a problem getting the symbols in your own code.

If you have followed the usage guide to the letter, it could be a failing of the framework itself. atos should help you discover the exact method calls in your code.

Disclaimer: I write the code for BugSense-iOS.framework.

划一舟意中人 2024-12-15 05:35:57

如果您有免费的 BugSense 帐户,它不会为您符号化崩溃报告。不过,您可以每月支付 19 美元来启用此功能。或者你可以尝试使用我写的这个 python 脚本。

https://github.com/dr4ke616/Bugsense-Symbolicater

If you have a free BugSense account, it wont Symbolicate the crash reports for you. However you can pay $19/month to enable this feature. Alternatively you can try use this python script I wrote.

https://github.com/dr4ke616/Bugsense-Symbolicater

两仪 2024-12-15 05:35:57

您还可以尝试使用 Crittercism 进行符号化。过去一个月我一直在使用它们,它们的符号系统非常准确。

You could also try symbolicating with Crittercism. I've been using them for the past month and their symbolification system has been spot on.

愛上了 2024-12-15 05:35:57

今天我自己不得不经历这个。我在 Ray Wenderlich 网站上找到了一个教程:

http ://www.raywenderlich.com/33669/overview-of-ios-crash-reporting-tools-part-1

我一直在以错误的方式使用Bugsense(没有符号和面包屑>.<)。

注意:面包屑适用于相当昂贵的版本。

如何将 dSYM 上传到 Bugsense 网站以符号化堆栈

跟踪 无论如何,从教程中,我发现我需要将 dSYM 文件夹作为压缩文件上传到 Bugsense。

该文件夹本质上允许原始堆栈跟踪来表示导致崩溃的函数调用,并显示行号。

当您进行归档时,您可以在“窗口”>“归档文件”中获取归档文件。组织者。

要获取 dSYM 文件,您需要:

  1. 右键单击存档 >在窗口中的 Finder 中显示 >组织者
    屏幕。

  2. 然后右键单击该文件>显示打包内容,这将显示 dSYM 文件夹。

  3. 右键单击并压缩该文件夹。

  4. 登录到您的 bugsense 帐户,查找您的应用程序,转到设置页面,左侧应该有一个名为“dSYM”的选项卡。点击它,然后按浏览并选择上传按钮上传您的 dSYM。

现在,您可以转到每个错误并按“符号”按钮,这会将所有那些令人讨厌的:

0000x1aeaf390a 

崩溃消息变成类似这样的内容:

MyViewController:m110, [MyViewController objectAtIndex:17] out of bounds

您需要为每次生成的相应存档上传相应的 dSYM 压缩文件您的应用程序的新捆绑版本。

否则,如果您尝试在没有此 dSYM 的情况下使用 Bugsense,您将得到无用的堆栈跟踪。

希望将来对任何人都有好处。祝你好运!

Just had to go through this myself today. I found a tutorial on the Ray Wenderlich site:

http://www.raywenderlich.com/33669/overview-of-ios-crash-reporting-tools-part-1

I had been using Bugsense the wrong way (without symbolicate and breadcrumb >.<).

Note: breadcrumb is for the rather expensive version.

How to upload dSYM to Bugsense website to symbolicate stacktrace

Anyhow, from the tutorial, I found out I needed to upload the dSYM folder as a zipped file to Bugsense.

This folder essentially allows the raw stacktrace to symbolicate with which function calls caused the crash, also showing line number.

When you do an archive, you get the archive file in Window > Organizer.

To get the dSYM file, you need to:

  1. Right click the archive > Show In Finder from the Window > Organizer
    screen.

  2. Then right click the file > Show packaged contents, this will show you the dSYM folder.

  3. Right click and zip that folder up.

  4. Login to your bugsense account, look for your app, go to the settings page and there should be a tab on the left called "dSYM". Tap on that and then press the Browse & Upload button to upload your dSYM.

Now you can go to each of your bug and press the "symbolicate" button, this will turn all those nasty:

0000x1aeaf390a 

crash messages to something like:

MyViewController:m110, [MyViewController objectAtIndex:17] out of bounds

You need to upload the respective dSYM zipped file for the respective archive that you generated everytime you generate a new bundle version of your app.

Otherwise, if you try to use Bugsense without this dSYM, you'll get a useless stacktrace.

Hope that benefits anyone in the future. Good luck!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文