Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.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 ios符号服务器端_Objective C - Fatal编程技术网

Objective c ios符号服务器端

Objective c ios符号服务器端,objective-c,Objective C,在无法使用ios开发工具和脚本的linux环境中,如何在上传到服务器后对ios崩溃报告进行符号化。我知道苹果使用atos和其他一些工具将十六进制地址和.dYSM文件一起映射到符号 我可以将.dYSM文件和崩溃报告一起上传到服务器。参考了QuincyKit,但他们在当地做象征。但其他的如曲棍球应用程序和Criterism都是远程操作的 请推荐在服务器上执行此操作的可能方法。您需要实现自己的linux兼容版本的atos、otool和dwarfdump(至少是符号化所需的功能)。苹果的工具不是开源的,

在无法使用ios开发工具和脚本的linux环境中,如何在上传到服务器后对ios崩溃报告进行符号化。我知道苹果使用atos和其他一些工具将十六进制地址和.dYSM文件一起映射到符号

我可以将.dYSM文件和崩溃报告一起上传到服务器。参考了QuincyKit,但他们在当地做象征。但其他的如曲棍球应用程序和Criterism都是远程操作的


请推荐在服务器上执行此操作的可能方法。

您需要实现自己的linux兼容版本的
atos
otool
dwarfdump
(至少是符号化所需的功能)。苹果的工具不是开源的,只在MacOSX上运行

这些服务都不提供可供第三方在非OS X系统上使用的解决方案。因此,除了实现在linux系统上运行所需的功能外,您唯一的机会就是在Mac上运行,就像QuincyKit Dos it、see或使用第三方服务一样


注:我是QuincyKit的创建者和HockeyApp的联合创始人。

这是可能的。你可以看看

我让它在Linux下工作。(Ubuntu服务器)然而,它需要一些时间来启动和运行


安装atosl

首先,您需要安装
libdwarf-dev
dwarfdump
binutils-dev
libiberty-dev

例如,在Ubuntu上:

$ sudo apt-get install libdwarf-dev dwarfdump binutils-dev libiberty-dev
从GitHub下载或克隆atosl repo:

$ git clone https://github.com/facebook/atosl.git
CD到atosl目录

$ cd atosl
创建一个本地配置
config.mk.local
,其中包含一个带有binutil应用程序位置的标志。(在Ubuntu中默认为
/usr/bin
)。如果不确定,可以执行
cat/var/lib/dpkg/info/binutils.list | less
并复制文件的路径
objdump
。例如,如果条目是
/usr/bin/objdump
,则您的路径是
/usr/bin

最后,您的
config.mk.local
应该如下所示:

LDFLAGS += -L/usr/bin
编译它:

$ make
现在您可以开始使用它了:

$ ./atosl --help

象征性例子 为了说明如何使用
atosl
,我将提供一个简单的示例

现在让我们看看崩溃日志中的一行:

13  ErrorApp    0x000ea294 0xe3000 + 29332
为了表示这一点,我们需要
加载地址
,以及
运行时地址

在此示例中,
运行时地址
0x000ea294
加载地址
0xe3000

现在我们拥有了我们所需要的一切:

$ ./atosl -o [YOUR_dSYM_FILE] -l [LOAD_ADDRESS] [RUNTIME_ADDRESS]
在本例中:

$ ./atosl -o ErrorApp.app.dSYM/Contents/Resources/DWARF/ErrorApp -l 0xe3000 0x000ea294
返回符号化的行:

main (in ErrorApp) (main.m:16)

供参考 您的
vmaddr
,通常是
0x00001000
,您可以通过查看二进制文件的segname
uu TEXT
Mach-O load命令找到。在我的示例中,这恰好是不同的,即
0x00004000

要找到
地址
,我们需要做一些数学运算

地址
可通过以下公式找到:

address = vmaddr + ( runtime_address - load_address ) 
在本例中,我们的地址是:

0x00004000 + ( 0x000ea294 - 0xe3000 ) = 0xB294


我还没有玩过这么多,但现在它似乎给了我需要的结果。也许它也适用于你。

你确定HockeyApp和Criterism没有运行OSX服务器而不是Linux吗?即使他们使用的是OX服务器,也很难为一个简单的应用程序提供基础设施。最好是在软件上下功夫,而不是在硬件上下功夫。好吧,我想就这样吧。我不知道你在说什么。会实现上述工具的自己版本吗?这个解决方案会用于像HockeyApp这样的APM服务吗?