gpt4 book ai didi

ios - 象征崩溃只是给了我 __PRETTY_FUNCTION__

转载 作者:行者123 更新时间:2023-11-28 20:25:01 27 4
gpt4 key购买 nike

我已将此代码用作我的应用程序的 UncaughtExceptionHandler 以捕获一些崩溃信息并将其返回给我:

NSArray *callStack = [exception callStackReturnAddresses];
int i,len = [callStack count];
// void **frames = new void *[len];
void **frames = (void**)malloc(len);

for (i = 0; i < len; ++i) {
frames[i] = (void *)[[callStack objectAtIndex:i] unsignedIntegerValue];
}
char **symbols = backtrace_symbols(frames,len);

/*
* Now format into a message for sending to the user
*/

NSMutableString *buffer = [[NSMutableString alloc] initWithCapacity:4096];

NSBundle *bundle = [NSBundle mainBundle];
[buffer appendFormat:@"Version %@\n\n",[bundle objectForInfoDictionaryKey:@"CFBundleVersion"]];
[buffer appendFormat:@"Device: %@. OS: %@\n", [[UIDevice currentDevice] model], [[UIDevice currentDevice] systemVersion]];
[buffer appendString:@"Uncaught Exception\n"];
[buffer appendFormat:@"Exception Name: %@\n",[exception name]];
[buffer appendFormat:@"Exception Reason: %@\n",[exception reason]];
[buffer appendString:@"Stack trace:\n\n"];
for (i = 0; i < len; ++i) {
[buffer appendFormat:@"%4d - %s\n",i,symbols[i]];
}

今天我收到一份崩溃报告,与您从 iTunes Connect 获得的报告相比,它的数量非常少。它看起来像这样:

0 - 0 CoreFoundation 0x395472a3 + 162
1 - 1 libobjc.A.dylib 0x3343697f objc_exception_throw + 30
2 - 2 CoreFoundation 0x395471c5 + 0
3 - 3 Foundation 0x342ec7cb + 66
4 - 4 myapp 0x0012887d myapp + 424061
5 - 5 myapp 0x001285ed myapp + 423405
6 - 6 myapp 0x0013f1f1 myapp + 516593
7 - 7 libdispatch.dylib 0x3783a11f + 10
8 - 8 libdispatch.dylib 0x378394b7 + 22
9 - 9 libdispatch.dylib 0x3783e1bd + 224
10 - 10 CoreFoundation 0x3951af3b + 1290
11 - 11 CoreFoundation 0x3948debd CFRunLoopRunSpecific + 356
12 - 12 CoreFoundation 0x3948dd49 CFRunLoopRunInMode + 104
13 - 13 GraphicsServices 0x3785b2eb GSEventRunModal + 74
14 - 14 UIKit 0x326cd2f9 UIApplicationMain + 1120
15 - 15 myapp 0x000e72e7 myapp + 156391
16 - 16 myapp 0x000c2530 myapp + 5424

我已经使用 atos 来表示报告中的内存地址,但是 3 个地址 0x0013f1f1 0x001285ed 0x0012887d 只返回 __PRETTY_FUNCTION__。 20480(在我的应用程序中)+ 101235 __PRETTY_FUNCTION__.20480(在我的应用程序中)+ 8047 __PRETTY_FUNCTION__.20480(在我的应用程序中)+ 8703 这并没有真正帮助我.我还能做些什么来至少找到导致崩溃的方法名称吗?

如果没有,是否有什么我可以添加到我的 UncaughtExceptionHandler 或在未来的版本中做的,会给我方法名称?我似乎从未收到任何 iTunes Connect 崩溃报告,这就是我选择这条路线的原因。

谢谢

最佳答案

如您所问,要获得更好的崩溃报告需要考虑的一些服务/库是。

  • > Crashlytics我强烈推荐,简单的设置、漂亮的界面和自动符号化
  • > TestFlight我爱用于 beta 分发的 TestFlight,我没有太多经验他们的崩溃报告工具
  • > QuincyKit如果你愿意,这很好托管您自己的服务器以接收报告,如果您不想弄乱的话使用服务器托管查看 HockeyApp这是“托管”HockeyKit 的版本+ 昆西套件
  • > JIRA Mobile Connect如果你使用 JIRA

使用其中之一可以让您忘记未处理异常的复杂性,他们是专家。除非您有兴趣成为该领域的专家,否则我真的建议您选择其中一个。我知道这不能回答您问题的第一部分,但如果您无法得到答案或想花时间研究它,希望它能提供一些值(value)。

关于ios - 象征崩溃只是给了我 __PRETTY_FUNCTION__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14345648/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com