我想试着象征我的iPhone应用程序的崩溃报告.
我从iTunes Connect检索了崩溃报告.我有我提交到App Store的应用程序二进制文件,我有作为构建的一部分生成的dSYM文件.
我将所有这些文件放在一个由聚光灯索引的目录中.
现在怎么办?
我试过调用:
symbolicatecrash crashreport.crash myApp.app.dSYM
Run Code Online (Sandbox Code Playgroud)
它只是输出崩溃报告中的相同文本,而不是符号化.
难道我做错了什么?
我通过AirBrake.io收到了一份没有象征意义的崩溃报告.由于崩溃报告与Apple崩溃日志的格式不完全相同,我不能像往常一样将它放在XCode上,因此我从我的XCode归档中获取完全相同的版本,试图在命令行上对其进行符号化.结果如下:
$ atos -o kidsapp.app/kidsapp 0x0002fc4c
0x0002fc4c (in kidsapp)
Run Code Online (Sandbox Code Playgroud)
我绝对相信我使用的是与崩溃报告相同的版本.所以我也尝试过使用dwarfdump:
$ dwarfdump --lookup 0x0002fc4c --arch armv7 kidsapp.app.dSYM
----------------------------------------------------------------------
File: kidsapp.app.dSYM/Contents/Resources/DWARF/kidsapp (armv7)
----------------------------------------------------------------------
Looking up address: 0x000000000002fc4c in .debug_info... not found.
Looking up address: 0x000000000002fc4c in .debug_frame... not found.
Run Code Online (Sandbox Code Playgroud)
也没有结果.除了使用错误的dSYM文件还有什么别的我可以做错吗?我知道这是正确的,因为这是AirBrake崩溃报告中提到的版本,它在我的XCode档案中.
欢迎任何想法/提示!
崩溃日志包含"二进制映像"部分,其中包含有关体系结构(armv6/armv7)的信息以及所有已加载模块的标识符.如何在运行时确定此信息?(至少,仅适用于应用程序可执行文件)
NSBundle有方法executableArchitectures,但如何确定正在运行的架构?
我想对使用 [NSThread callStackSymbols] 记录的堆栈跟踪符号进行符号化,以识别完整的堆栈回溯调用。但是,这并没有给出符号化的痕迹。
0 TestApp 0x0029616f TestApp + 1823087
1 TestApp 0x003ef18d TestApp + 3236237
2 UIKit 0x2ab7bb1f <redacted> + 438
3 UIKit 0x2ac0bea3 <redacted> + 306
4 UIKit 0x2ab7bb1f <redacted> + 438
5 CoreFoundation 0x2757546d <redacted> + 48
6 CoreFoundation 0x2756e4c3 <redacted> + 234
7 UIKit 0x2ab7bc9b <redacted> + 818
8 UIKit 0x2ae32799 <redacted> + 584
9 UIKit 0x2abdfbd9 <redacted> + 308
10 UIKit 0x2ab5bdd7 <redacted> + 458
11 CoreFoundation 0x2760fffd <redacted> + 20
12 CoreFoundation 0x2760d6bb <redacted> …
Run Code Online (Sandbox Code Playgroud)