Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 破译坠机报告_Objective C_Ios_Crash Reports - Fatal编程技术网

Objective c 破译坠机报告

Objective c 破译坠机报告,objective-c,ios,crash-reports,Objective C,Ios,Crash Reports,我已经习惯于理解我的事故报告(请容忍我第一次这样做) 事故报告: 最后一个异常回溯(来自我的程序而非框架的最后两行): “appname”0x0002c93e 0x2b000+6462 “appname”0x0002c3f0 0x2b000+5104 在终端I类型中: atos-arch armv7-o'appname'.app/'appname'0x2b000+6462 然后回来: -[cameleOnInCallNumberListViewControllerCallChange](在'ap

我已经习惯于理解我的事故报告(请容忍我第一次这样做)

事故报告:

最后一个异常回溯(来自我的程序而非框架的最后两行):

“appname”0x0002c93e 0x2b000+6462

“appname”0x0002c3f0 0x2b000+5104

在终端I类型中:

atos-arch armv7-o'appname'.app/'appname'0x2b000+6462

然后回来:

-[cameleOnInCallNumberListViewControllerCallChange](在'appname'中)+6464

+

-[CameleonAppDelegate应用程序willEnterForeground:(在'appname'中)+546

最后一行呢

atos-ArchV7-o Caméléon.app/Caméléon 0x2b000+5104

然后回来:

-[cameleOnInCallNumberListViewControllerCallChange](在'appname'中)+6464

+

-[CameleonAddressbookViewController gPressed](在'appname'中)+88


因此,我的问题是,为什么有两个选择器/方法签名显示,而不是只有一个,并且有没有办法获取它崩溃时所在的行号?

Xcode具有对崩溃报告进行符号化的功能

如果您对此有疑问,请查看以下帖子:

此外,现在有一些令人惊奇的工具,使符号化的事情变得更容易,如Crashlytics和critercism

==校正

@科尼说得很好。这是最后一个异常回溯,因此它是一个线程

==更新


@科尼:是的,我也听说了昆西基特和冰球应用的好消息。对于遗漏,我深表歉意。

Xcode具有表示崩溃报告的功能

如果您对此有疑问,请查看以下帖子:

此外,现在有一些令人惊奇的工具,使符号化的事情变得更容易,如Crashlytics和critercism

==校正

@科尼说得很好。这是最后一个异常回溯,因此它是一个线程

==更新


@科尼:是的,我也听说了昆西基特和冰球应用的好消息。对于遗漏,我深表歉意。

您提供了两个数字,因此该工具正在查找两种方法

atos -arch armv7 -o Caméléon.app/Caméléon 0x2b000 + 5104
                                            ^1       ^2
因为它们是分开的,所以它们被视为不同的参数。您应该只使用堆栈跟踪的每一行中的第一个数字

'appname' 0x0002c93e 0x2b000 + 6462
           ^

这个数字是函数调用的实际地址。接下来使用的数字是该方法的起点位置和该方法中的偏移量。这就是为什么每次测试的第一个结果都是一样的。它们发生在同一个方法中,而不是同一行。

您提供了两个数字,因此工具正在查找两个方法

atos -arch armv7 -o Caméléon.app/Caméléon 0x2b000 + 5104
                                            ^1       ^2
因为它们是分开的,所以它们被视为不同的参数。您应该只使用堆栈跟踪的每一行中的第一个数字

'appname' 0x0002c93e 0x2b000 + 6462
           ^
这个数字是函数调用的实际地址。接下来使用的数字是该方法的起点位置和该方法中的偏移量。这就是为什么每次测试的第一个结果都是一样的。它们发生在同一方法中,而不是同一行。

扩展到:

你在那次通话中得到了3个结果,而不是两个

您的atos调用实际上检查了3个地址:
0x2b000
+
6462
,这就是您在返回中看到3行的原因!第二次检查这3个:
0x2b000
+
5104

相反,如果要检查应用程序二进制文件(不会返回行号!),则应使用此选项:

如果还想获取行号,请调用atos并传递dwarf文件:

atos -arch armv7 -o 'appname'.app.dSYM/Contents/Resources/DWARF/'appname' 0x0002c93e
atos -arch armv7 -o 'appname'.app.dSYM/Contents/Resources/DWARF/'appname' 0x0002c3f0
延伸至:

你在那次通话中得到了3个结果,而不是两个

您的atos调用实际上检查了3个地址:
0x2b000
+
6462
,这就是您在返回中看到3行的原因!第二次检查这3个:
0x2b000
+
5104

相反,如果要检查应用程序二进制文件(不会返回行号!),则应使用此选项:

如果还想获取行号,请调用atos并传递dwarf文件:

atos -arch armv7 -o 'appname'.app.dSYM/Contents/Resources/DWARF/'appname' 0x0002c93e
atos -arch armv7 -o 'appname'.app.dSYM/Contents/Resources/DWARF/'appname' 0x0002c3f0

为什么您需要手动将崩溃报告符号化?我已经按照链接答案上方答案的说明将它们复制到设备日志中。但它们不显示方法调用。我在这里有点猜测,因为我不确定,但我想我需要手动完成,因为我们的提交协议。我们提交我们的构建,然后另一个用户编译并发送给苹果。因此,我有一个提交的app.app文件,但它与在我的计算机上构建的文件不同。如果您想查看行号,请使用atos命令和dSYM包中与应用程序二进制文件一起生成的dwarf文件。没有必要将符号包含到应用程序二进制文件中,这只会使应用程序变大30-50%。使用dSYM进行符号化可以获得更好的结果,因为它也可以显示行号。为什么需要手动对崩溃报告进行符号化?我已按照链接答案上方答案的说明将它们复制到设备日志中。但它们不显示方法调用。我在这里有点猜测,因为我不确定,但我想我需要手动完成,因为我们的提交协议。我们提交我们的构建,然后另一个用户编译并发送给苹果。因此,我有一个提交的app.app文件,但它与在我的计算机上构建的文件不同。如果您想查看行号,请使用atos命令和dSYM包中与应用程序二进制文件一起生成的dwarf文件。没有必要将符号包含到应用程序二进制文件中,这只会使应用程序变大30-50%。使用dSYM进行符号化可以得到更好的结果,因为它也可以显示行号。但是如果它显示方法调用(如上所示),它不是在进行符号化吗?意思是