Fabric 在 iOS 上有 BUG

Fabric have a BUG on iOS

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

[[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文件到fabric

我解决了这个问题,这是我的应用程序错误,谢谢

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

memory_offset = _dyld_get_image_vmaddr_slide(i)

_dyld_get_image_vmaddr_slide() returns the virtural memory address slide amount of the image indexed by image_index. If image_index is out of range zero is returned.

memory_offset 每次启动应用程序时都不同。

memory_address - memory_offset = file_address

file_address 和.dSYM 可以正确符号化一个地址。

我的错误是我将 memory_address 保存到文件中,然后下一个应用程序启动,我传递给 fabric SDK,下一个应用程序启动 memory_offset 不同,因此 fabric 无法符号化地址。


我的解决方案: 我将 file_address 保存到文件中,下次启动应用程序时,我会添加, file_address + memory_offset = now_address, 我将 now_address 传递给 SDK,可以正确的符号化