iOS中CPU线程调试的高级技巧分享

前言

最近在开发直播,发现CPU性能被打满后导致CPU降频,发热严重,然后卡顿…

为了定位这个问题我们花费了至少 3天的时间 一点一点跟踪CPU的线程代码,当遇到C++的thread的时候没有符号表,只能看见一坨对象地址,除此以外连个方法名都没有的时候真是手足无措.本篇介绍一个高级调试 方法,使用符号表和相关 指令寻踪 相关代码调用,写的不好 大佬们请轻喷.代码相关过程感谢同事 陈豪的大力支持.

Talk is cheap show me the code

我们的实现思路是找到动态库的首地址调用从此入手用相关指令恢复

前期准备

build setting中开启符号表

然后 点击 工程中的Product

下一步骤 打开终端 cd 到这这个目录(可以打开终端 输入 cd 空格 拖拽那个文件夹)

注意:这一步非常重要 如果不好使,请重试几次.

拿出main函数的首地址 ASLR中搜搜的 首地址然后复制 回到终端中输入

atos -arch arm64 -o com_kwai_gif.app.dSYM/Contents/Resources/DWARF/com_kwai_gif -l 0x1006b8000

注意:这里是符号表路径,如果不知道在哪里找到请google一下.

我们来测试一下 好不好使

首先在控制台顶部的面板点击

如果看到 如下内容说明已经成功.

我们找到相关线程 没有名称也不知道对象叫什么 就一个十六进制地址

好了 如果有问题 请删除product和符号表重新编译

总结

CPU调试的过程非常麻烦,而且中间过程的代码多数都是C++的调用,主要是线程消耗的开销,中有很多收获希望大家多多指教.

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

以上是来客网为你收集整理的iOS中CPU线程调试的高级技巧分享全部内容,希望文章能够帮你解决iOS中CPU线程调试的高级技巧分享所遇到的程序开发问题。

如果觉得来客网网站内容还不错,欢迎将来客网网站推荐给程序员好友。