加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 没有dsym的iOS崩溃报告符号 – 在二进制文件中看到的地址之

发布时间:2020-12-16 07:20:44 所属栏目:百科 来源:网络整理
导读:我正在尝试表示我没有dsym文件的iOS崩溃报告.我知道我将无法获得一个好的file_name:行号符号,但是找出代码的汇编部分中崩溃的位置就足够了. 首先,这是崩溃线程的堆栈跟踪: Thread 3 name: Dispatch queue: com.unity3d.WebOperationQueue :: NSOperation 0
我正在尝试表示我没有dsym文件的iOS崩溃报告.我知道我将无法获得一个好的file_name:行号符号,但是找出代码的汇编部分中崩溃的位置就足够了.

首先,这是崩溃线程的堆栈跟踪:

Thread 3 name:  Dispatch queue: com.unity3d.WebOperationQueue :: NSOperation 0x1483250e0 (QOS: USER_INTERACTIVE)
Thread 3 Crashed:
0   myapp                       0x0000000100ec4738 0x100080000 + 14960440
1   myapp                       0x000000010120e0fc 0x100080000 + 18407676
2   myapp                       0x00000001011d7e00 0x100080000 + 18185728
3   myapp                       0x0000000100085cfc 0x100080000 + 23804
4   CFNetwork                   0x0000000185027780 __65-[NSURLConnectionInternal _withConnectionAndDelegate:onlyActive:]_block_invoke + 80
...

我有一个解密的二进制文件,并从崩溃报告和二进制匹配中验证了uuid.要手动符号化堆栈地址,我这样做

atos -arch arm64 -o myapp -l 0x100080000 0x0000000100ec4738

我得到上面命令的输出为

0x0000000100e44738 (in myapp) + 544

部分预期这是因为我没有dsym文件.

请注意,如果我们计算,也可以获得0x0000000100e44738

符号地址=(幻灯片堆栈 – 加载地址)

slide是0x0000000100000000(从otool -arch arm64 -l myapp发现vmaddr | grep -B 3 -A 8 -m 2“__TEXT”)

所以0x0000000100000000 0x0000000100ec4738 – 0x100080000 = 0x100e44738与atos返回的上述地址相同.

现在问题是,我在使用下面的otool命令获得的二进制文件中的TEXT部分的地址中找不到0x100e44738符号地址

otool -tvV myapp

上面命令的开头看起来像这样.

myapp:
(__TEXT,__text) section
__ZNK5physx14NpSceneQueries10multiQueryINS_12PxRaycastHitEEEbRKNS_15MultiQueryInputERNS_13PxHitCallbackIT_EENS_7PxFlagsINS_9PxHitFlag4EnumEtEEPKNS_12PxQueryCacheERKNS_17PxQueryFilterDataEPNS_21PxQueryFilterCallbackEPNS_20BatchQueryFilterDataE:
0000000101262f40    stp x28,x27,[sp,#-96]!
0000000101262f44    stp x26,x25,#16]
0000000101262f48    stp x24,x23,#32]
0000000101262f4c    stp x22,x21,#48]
0000000101262f50    stp x20,x19,#64]
0000000101262f54    stp x29,x30,#80]
...

我们可以清楚地看到otool -tvV(0x101262f40)的起始地址大于符号地址(0x100e44738).所以我无法找到我错过的或者如何从这里开始.

这个堆栈跟踪是针对SIGSEGV异常的,我不确定它是否会发生任何变化.我已经在SIGABRT异常的另一个示例应用程序中尝试了完全相同的手动符号步骤,我确实看到它能够指出崩溃到程序集中的确切行.

任何帮助或指针是最受欢迎的.

解决方法

我看起来像NSURLConnection的问题.通常这意味着有一个委托在dealloc上没有被正确设置(NSURLConnection被赋值 – 不弱,所以你必须手动将它设置为nil).在代码中查找使用NSURLConnection或代码等其他网络的位置.请特别注意将自己设置为网络请求委托的视图或viewController,因为视图通常会在用户离开页面时留下内存.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读