真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

iOS中CPU線程調(diào)試的高級技巧分享

前言

成都創(chuàng)新互聯(lián)是一家朝氣蓬勃的網(wǎng)站建設(shè)公司。公司專注于為企業(yè)提供信息化建設(shè)解決方案。從事網(wǎng)站開發(fā),網(wǎng)站制作,網(wǎng)站設(shè)計,網(wǎng)站模板,微信公眾號開發(fā),軟件開發(fā),微信小程序開發(fā),十余年建站對成都餐廳設(shè)計等多個方面,擁有豐富建站經(jīng)驗。

最近在開發(fā)直播,發(fā)現(xiàn)CPU性能被打滿后導(dǎo)致CPU降頻,發(fā)熱嚴(yán)重,然后卡頓…

為了定位這個問題我們花費了至少 3天的時間 一點一點跟蹤CPU的線程代碼,當(dāng)遇到C++的thread的時候沒有符號表,只能看見一坨對象地址,除此以外連個方法名都沒有的時候真是手足無措.本篇介紹一個高級調(diào)試 方法,使用符號表和相關(guān) 指令尋蹤 相關(guān)代碼調(diào)用,寫的不好 大佬們請輕噴.代碼相關(guān)過程感謝同事 陳豪的大力支持.

Talk is cheap show me the code

我們的實現(xiàn)思路是找到動態(tài)庫的首地址調(diào)用從此入手用相關(guān)指令恢復(fù)

前期準(zhǔn)備

build setting中開啟符號表

iOS中CPU線程調(diào)試的高級技巧分享

1.導(dǎo)入頭文件

#import 

這是mac os的可執(zhí)行文件的動態(tài)鏈接庫頭文件 內(nèi)部內(nèi)建函數(shù)有幾個我們需要用到

2.復(fù)制下面代碼到你的相關(guān)調(diào)用的地方

//1
uint32_t count = _dyld_image_count();
DDLogInfo(@"Dyld image count %d", count);
//2
for (int i = 0; i < count; i++) {
char *image_name = (char *)_dyld_get_image_name(i);
//3
const struct mach_header *mh = _dyld_get_image_header(i);
intptr_t vmaddr_slide = _dyld_get_image_vmaddr_slide(i);
//4
NSLog(@"Image name %s at address 0x%llx and ASLR slide 0x%lx.\n",
image_name, (mach_vm_address_t)mh, vmaddr_slide);
}

我解釋一下以上代碼

1.拿出當(dāng)前鏡像數(shù)量

2.遍歷鏡像

3.獲取鏡像首地址

4.打印

然后運行你的程序

然后看下控制臺 過濾一下 ASLR我們log中的鍵入內(nèi)容

iOS中CPU線程調(diào)試的高級技巧分享

然后 點擊 工程中的Product

iOS中CPU線程調(diào)試的高級技巧分享

右鍵 show in finder

iOS中CPU線程調(diào)試的高級技巧分享

下一步驟 打開終端 cd 到這這個目錄(可以打開終端 輸入 cd 空格 拖拽那個文件夾)

iOS中CPU線程調(diào)試的高級技巧分享

然后 pwd一下 看看

3.控制臺搜索相關(guān)我們打印log的代碼

找到我們第一條首地址

iOS中CPU線程調(diào)試的高級技巧分享

注意:這一步非常重要 如果不好使,請重試幾次.

拿出main函數(shù)的首地址 ASLR中搜搜的 首地址然后復(fù)制 回到終端中輸入

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

注意:這里是符號表路徑,如果不知道在哪里找到請google一下.

我們來測試一下 好不好使

首先在控制臺頂部的面板點擊

iOS中CPU線程調(diào)試的高級技巧分享

然后 在 consolo中輸入 bt

iOS中CPU線程調(diào)試的高級技巧分享

如果看到 如下內(nèi)容說明已經(jīng)成功.

iOS中CPU線程調(diào)試的高級技巧分享

4.真機運行 找出未知線程

首先點擊Xcode工程中的Profile運行instruments,我這里是運行工程之后 Xcode9.4可以無縫轉(zhuǎn)換到instruments

iOS中CPU線程調(diào)試的高級技巧分享

我們找到相關(guān)線程 沒有名稱也不知道對象叫什么 就一個十六進制地址

iOS中CPU線程調(diào)試的高級技巧分享

我們隨便找個地址 在終端中輸入

iOS中CPU線程調(diào)試的高級技巧分享

好了 如果有問題 請刪除product和符號表重新編譯

總結(jié)

CPU調(diào)試的過程非常麻煩,而且中間過程的代碼多數(shù)都是C++的調(diào)用,主要是線程消耗的開銷,中有很多收獲希望大家多多指教.

好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對創(chuàng)新互聯(lián)的支持。


新聞名稱:iOS中CPU線程調(diào)試的高級技巧分享
標(biāo)題來源:http://weahome.cn/article/pddjsj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部