Fabric在iOS

时间:2018-03-16 09:22:31

标签: ios objective-c google-fabric

我使用该方法上传自定义回溯

[[Crashlytics sharedInstance] recordCustomExceptionName:@"test" reason:@"error" frameArray:myArray];
“myArray”中的

有两个地址0x10005f35b和0x10005f1b7

在我的macbook上,我使用“dwarfdump”来解析0x10005f35b而0x10005f1b7可以得到正确的符号。

但我上传0x10005f35b和0x10005f1b7到Fabric,fabric不能符号0x10005f35b

面料结果:

0x10005f35b (Missing) 
0x10005f1b7 -[ViewController fabricStackTest:]

为什么Fabric无法解析地址0x10005f35b ??

相同的IPA文件和相同的DSym文件,我确实将DSym文件上传到结构

1 个答案:

答案 0 :(得分:2)

我解决了这个问题,这是我的app bug,谢谢

当您在Crashlytics UI上看到“(Missing)”时,您可以先检查内存偏移是否与Fabric相同?

memory_offset = _dyld_get_image_vmaddr_slide(i)

  

_dyld_get_image_vmaddr_slide()返回由image_index索引的图像的虚拟内存地址幻灯片数量。如果image_index超出范围,则返回零。

每次应用启动时,

memory_offset都不同。

  

memory_address - memory_offset = file_address

file_address和.dSYM可以更正符号化地址。

我的错误是我将memory_address保存到文件并且下一个应用程序启动,我传递给Fabric SDK,下一个应用程序启动memory_offset是不同的,所以结构不能象征地址。

我的解决方案: 我将file_address保存到文件中,然后下一个应用程序启动,我做了添加, file_address + memory_offset = now_address, 我将now_address传递给SDK,可以更正符号