[發(fā)明專(zhuān)利]調(diào)用棧回溯方法、裝置、設(shè)備和介質(zhì)有效
| 申請(qǐng)?zhí)枺?/td> | 202110303889.0 | 申請(qǐng)日: | 2021-03-22 |
| 公開(kāi)(公告)號(hào): | CN112925718B | 公開(kāi)(公告)日: | 2023-10-20 |
| 發(fā)明(設(shè)計(jì))人: | 劉洪凱 | 申請(qǐng)(專(zhuān)利權(quán))人: | 北京字節(jié)跳動(dòng)網(wǎng)絡(luò)技術(shù)有限公司 |
| 主分類(lèi)號(hào): | G06F11/36 | 分類(lèi)號(hào): | G06F11/36 |
| 代理公司: | 北京開(kāi)陽(yáng)星知識(shí)產(chǎn)權(quán)代理有限公司 11710 | 代理人: | 祝樂(lè)芳 |
| 地址: | 100041 北京市石景山區(qū)*** | 國(guó)省代碼: | 北京;11 |
| 權(quán)利要求書(shū): | 查看更多 | 說(shuō)明書(shū): | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 調(diào)用 回溯 方法 裝置 設(shè)備 介質(zhì) | ||
本公開(kāi)實(shí)施例涉及一種調(diào)用棧回溯方法、裝置、設(shè)備和介質(zhì),其中,該方法包括:申請(qǐng)第一內(nèi)存區(qū)域,并確定其目標(biāo)子區(qū)域;執(zhí)行構(gòu)造功能模塊對(duì)應(yīng)的代碼段,對(duì)目標(biāo)子區(qū)域中存儲(chǔ)的內(nèi)容進(jìn)行初始化;將初始化后的目標(biāo)子區(qū)域中的存儲(chǔ)內(nèi)容更改為自定義虛擬功能模塊表的地址;該表中的第三個(gè)功能模塊地址為預(yù)設(shè)目標(biāo)回調(diào)功能模塊的地址;基于第一內(nèi)存區(qū)域的首地址,執(zhí)行棧回溯功能模塊WalkStack對(duì)應(yīng)的代碼段,以啟動(dòng)調(diào)用棧的回溯;在調(diào)用棧的回溯過(guò)程中,執(zhí)行預(yù)設(shè)目標(biāo)回調(diào)功能模塊對(duì)應(yīng)的代碼段,并確定執(zhí)行次數(shù);根據(jù)該執(zhí)行次數(shù),確定是否結(jié)束調(diào)用棧的回溯。本公開(kāi)實(shí)施例實(shí)現(xiàn)了在程序運(yùn)行過(guò)程中對(duì)棧回溯的有效控制,達(dá)到了控制棧回溯次數(shù)的效果,降低了棧回溯的耗時(shí)。
技術(shù)領(lǐng)域
本公開(kāi)涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種調(diào)用棧回溯方法、裝置、設(shè)備和介質(zhì)。
背景技術(shù)
在應(yīng)用程序的運(yùn)行過(guò)程中,通常涉及到調(diào)用棧(Call stack)的回溯。通過(guò)棧回溯,可以獲取需求的棧幀信息,以用于定位和分析程序運(yùn)行過(guò)程中的異常。
在現(xiàn)有棧回溯方案中,通常直接調(diào)用系統(tǒng)函數(shù)getStackTrace來(lái)實(shí)現(xiàn)。然而,整個(gè)棧回溯過(guò)程不可控,需要執(zhí)行所有棧幀的回溯(即全量棧回溯)后,才能結(jié)束,導(dǎo)致棧回溯耗時(shí)較長(zhǎng)。
發(fā)明內(nèi)容
為了解決上述技術(shù)問(wèn)題或者至少部分地解決上述技術(shù)問(wèn)題,本公開(kāi)實(shí)施例提供了一種調(diào)用棧回溯方法、裝置、設(shè)備和介質(zhì)。
第一方面,本公開(kāi)實(shí)施例提供了一種調(diào)用棧回溯方法,包括:
申請(qǐng)第一內(nèi)存區(qū)域,并確定所述第一內(nèi)存區(qū)域中的目標(biāo)子區(qū)域;其中,所述目標(biāo)子區(qū)域是所述第一內(nèi)存區(qū)域的首地址對(duì)應(yīng)的區(qū)域;
獲取上下文參數(shù)和當(dāng)前線(xiàn)程指針;
基于所述第一內(nèi)存區(qū)域的首地址、所述上下文參數(shù)和所述當(dāng)前線(xiàn)程指針,執(zhí)行構(gòu)造功能模塊對(duì)應(yīng)的代碼段,對(duì)所述目標(biāo)子區(qū)域中存儲(chǔ)的內(nèi)容進(jìn)行初始化;
將初始化后的目標(biāo)子區(qū)域中的存儲(chǔ)內(nèi)容更改為自定義虛擬功能模塊表的地址;其中,所述自定義虛擬功能模塊表中的第三個(gè)功能模塊地址為預(yù)設(shè)目標(biāo)回調(diào)功能模塊的地址;
基于所述第一內(nèi)存區(qū)域的首地址,執(zhí)行棧回溯功能模塊WalkStack對(duì)應(yīng)的代碼段,以啟動(dòng)調(diào)用棧的回溯;
在所述調(diào)用棧的回溯過(guò)程中,執(zhí)行所述預(yù)設(shè)目標(biāo)回調(diào)功能模塊對(duì)應(yīng)的代碼段,并確定所述預(yù)設(shè)目標(biāo)回調(diào)功能模塊對(duì)應(yīng)的代碼段的執(zhí)行次數(shù);
根據(jù)所述預(yù)設(shè)目標(biāo)回調(diào)功能模塊對(duì)應(yīng)的代碼段的執(zhí)行次數(shù),確定是否結(jié)束所述調(diào)用棧的回溯。
第二方面,本公開(kāi)實(shí)施例還提供了一種調(diào)用棧回溯裝置,包括:
內(nèi)存區(qū)域申請(qǐng)模塊,用于申請(qǐng)第一內(nèi)存區(qū)域,并確定所述第一內(nèi)存區(qū)域中的目標(biāo)子區(qū)域;其中,所述目標(biāo)子區(qū)域是所述第一內(nèi)存區(qū)域的首地址對(duì)應(yīng)的區(qū)域;
參數(shù)獲取模塊,用于獲取上下文參數(shù)和當(dāng)前線(xiàn)程指針;
內(nèi)容初始化模塊,用于基于所述第一內(nèi)存區(qū)域的首地址、所述上下文參數(shù)和所述當(dāng)前線(xiàn)程指針,執(zhí)行構(gòu)造功能模塊對(duì)應(yīng)的代碼段,對(duì)所述目標(biāo)子區(qū)域中存儲(chǔ)的內(nèi)容進(jìn)行初始化;
內(nèi)容更改模塊,用于將初始化后的目標(biāo)子區(qū)域中的存儲(chǔ)內(nèi)容更改為自定義虛擬功能模塊表的地址;其中,所述自定義虛擬功能模塊表中的第三個(gè)功能模塊地址為預(yù)設(shè)目標(biāo)回調(diào)功能模塊的地址;
第一執(zhí)行模塊,用于基于所述第一內(nèi)存區(qū)域的首地址,執(zhí)行棧回溯功能模塊WalkStack對(duì)應(yīng)的代碼段,以啟動(dòng)調(diào)用棧的回溯;
第二執(zhí)行模塊,用于在所述調(diào)用棧的回溯過(guò)程中,執(zhí)行所述預(yù)設(shè)目標(biāo)回調(diào)功能模塊對(duì)應(yīng)的代碼段,并確定所述預(yù)設(shè)目標(biāo)回調(diào)功能模塊對(duì)應(yīng)的代碼段的執(zhí)行次數(shù);
該專(zhuān)利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專(zhuān)利權(quán)人授權(quán)。該專(zhuān)利全部權(quán)利屬于北京字節(jié)跳動(dòng)網(wǎng)絡(luò)技術(shù)有限公司,未經(jīng)北京字節(jié)跳動(dòng)網(wǎng)絡(luò)技術(shù)有限公司許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買(mǎi)此專(zhuān)利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110303889.0/2.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專(zhuān)利網(wǎng)。
- 同類(lèi)專(zhuān)利
- 專(zhuān)利分類(lèi)
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F11-00 錯(cuò)誤檢測(cè);錯(cuò)誤校正;監(jiān)控
G06F11-07 .響應(yīng)錯(cuò)誤的產(chǎn)生,例如,容錯(cuò)
G06F11-22 .在準(zhǔn)備運(yùn)算或者在空閑時(shí)間期間內(nèi),通過(guò)測(cè)試作故障硬件的檢測(cè)或定位
G06F11-28 .借助于檢驗(yàn)標(biāo)準(zhǔn)程序或通過(guò)處理作錯(cuò)誤檢測(cè)、錯(cuò)誤校正或監(jiān)控
G06F11-30 .監(jiān)控
G06F11-36 .通過(guò)軟件的測(cè)試或調(diào)試防止錯(cuò)誤
- IDL調(diào)用裝置及調(diào)用方法
- 調(diào)用方法及調(diào)用系統(tǒng)
- 一種服務(wù)調(diào)用方法及裝置
- 服務(wù)調(diào)用方法、服務(wù)調(diào)用裝置及服務(wù)調(diào)用系統(tǒng)
- 組件調(diào)用方法、裝置及計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)
- 身份驗(yàn)證方法及裝置
- 系統(tǒng)調(diào)用處理方法、裝置、計(jì)算機(jī)設(shè)備和存儲(chǔ)介質(zhì)
- 一種數(shù)據(jù)調(diào)用方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì)
- 一種微服務(wù)請(qǐng)求重試的方法及終端
- 業(yè)務(wù)數(shù)據(jù)的處理方法、裝置及系統(tǒng)
- 基于Viterbi譯碼的多路并行循環(huán)塊回溯技術(shù)
- 一種棧回溯方法
- 虛擬機(jī)回溯方法及相關(guān)設(shè)備
- 一種數(shù)據(jù)回溯方法、裝置及設(shè)備
- 一種信息回溯方法及設(shè)備
- 重過(guò)賬的核算方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)
- 面向自主芯片硬件邏輯漏洞的激活序列生成方法
- 一種GMSK系統(tǒng)Viterbi解調(diào)的一步回溯方法
- 一種運(yùn)算性能測(cè)試方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì)
- 風(fēng)控?cái)?shù)據(jù)的回溯方法及裝置、存儲(chǔ)介質(zhì)和處理器
- 一種數(shù)據(jù)庫(kù)讀寫(xiě)分離的方法和裝置
- 一種手機(jī)動(dòng)漫人物及背景創(chuàng)作方法
- 一種通訊綜合測(cè)試終端的測(cè)試方法
- 一種服裝用人體測(cè)量基準(zhǔn)點(diǎn)的獲取方法
- 系統(tǒng)升級(jí)方法及裝置
- 用于虛擬和接口方法調(diào)用的裝置和方法
- 線(xiàn)程狀態(tài)監(jiān)控方法、裝置、計(jì)算機(jī)設(shè)備和存儲(chǔ)介質(zhì)
- 一種JAVA智能卡及其虛擬機(jī)組件優(yōu)化方法
- 檢測(cè)程序中方法耗時(shí)的方法、裝置及存儲(chǔ)介質(zhì)
- 函數(shù)的執(zhí)行方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)
- 光源裝置、照明裝置、液晶裝置和電子裝置
- 預(yù)測(cè)裝置、編輯裝置、逆預(yù)測(cè)裝置、解碼裝置及運(yùn)算裝置
- 圖像形成裝置、定影裝置、遮光裝置以及保持裝置
- 打印裝置、讀取裝置、復(fù)合裝置以及打印裝置、讀取裝置、復(fù)合裝置的控制方法
- 電子裝置、光盤(pán)裝置、顯示裝置和攝像裝置
- 光源裝置、照明裝置、曝光裝置和裝置制造方法
- 用戶(hù)裝置、裝置對(duì)裝置用戶(hù)裝置、后端裝置及其定位方法
- 遙控裝置、通信裝置、可變裝置及照明裝置
- 透鏡裝置、攝像裝置、處理裝置和相機(jī)裝置
- 抖動(dòng)校正裝置、驅(qū)動(dòng)裝置、成像裝置、和電子裝置





