[發明專利]調用棧回溯方法、裝置、設備和介質有效
| 申請號: | 202110303889.0 | 申請日: | 2021-03-22 |
| 公開(公告)號: | CN112925718B | 公開(公告)日: | 2023-10-20 |
| 發明(設計)人: | 劉洪凱 | 申請(專利權)人: | 北京字節跳動網絡技術有限公司 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 北京開陽星知識產權代理有限公司 11710 | 代理人: | 祝樂芳 |
| 地址: | 100041 北京市石景山區*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 調用 回溯 方法 裝置 設備 介質 | ||
1.一種調用棧回溯方法,其特征在于,包括:
申請第一內存區域,并確定所述第一內存區域中的目標子區域;其中,所述目標子區域是所述第一內存區域的首地址對應的區域;
獲取上下文參數和當前線程指針;
基于所述第一內存區域的首地址、所述上下文參數和所述當前線程指針,執行構造功能模塊對應的代碼段,對所述目標子區域中存儲的內容進行初始化;
將初始化后的目標子區域中的存儲內容更改為自定義虛擬功能模塊表的地址;其中,所述自定義虛擬功能模塊表中的第三個功能模塊地址為預設目標回調功能模塊的地址;
基于所述第一內存區域的首地址,執行棧回溯功能模塊WalkStack對應的代碼段,以啟動調用棧的回溯;
在所述調用棧的回溯過程中,執行所述預設目標回調功能模塊對應的代碼段,并確定所述預設目標回調功能模塊對應的代碼段的執行次數;
根據所述預設目標回調功能模塊對應的代碼段的執行次數,確定是否結束所述調用棧的回溯。
2.根據權利要求1所述的方法,其特征在于,還包括:
在執行所述預設目標回調功能模塊對應的代碼段的過程中,基于所述第一內存區域的首地址,執行目標信息獲取功能模塊對應的代碼段,以獲取目標信息;其中,所述目標信息獲取功能模塊包括方法指針獲取功能模塊GetMethod和/或指令偏移值獲取功能模塊GetDexPc。
3.根據權利要求1所述的方法,其特征在于,還包括:
確定所述預設目標回調功能模塊對應的代碼段的執行次數閾值;
相應地,根據所述預設目標回調功能模塊對應的代碼段的執行次數,確定是否結束所述調用棧的回溯,包括:
如果所述預設目標回調功能模塊對應的代碼段的執行次數達到所述執行次數閾值,則基于執行所述預設目標回調功能模塊對應的代碼段得到的目標結果,結束所述調用棧的回溯。
4.根據權利要求3所述的方法,其特征在于,確定所述預設目標回調功能模塊對應的代碼段的執行次數閾值,包括:
獲取預先設置的所述預設目標回調功能模塊對應的代碼段的執行次數閾值;
或者
獲取當前運行的線程的類型,并根據所述線程的類型,確定所述預設目標回調功能模塊對應的代碼段的執行次數閾值;其中,所述線程的類型包括主線程或子線程;
或者
獲取應用程序的當前運行狀態信息,并根據所述當前運行狀態信息,確定所述預設目標回調功能模塊對應的代碼段的執行次數閾值;其中,所述當前運行狀態信息包括運行正常或者運行異常。
5.根據權利要求2所述的方法,其特征在于,在執行所述方法指針獲取功能模塊GetMethod對應的代碼段之后,還包括:
基于獲取的方法指針,執行方法描述信息獲取功能模塊PrettyMethod對應的代碼段,獲取所述方法指針對應的描述信息。
6.根據權利要求5所述的方法,其特征在于,所述描述信息包括所述方法指針對應的方法所在類名,所述方法還包括:
獲取預先確定的類名列表;其中,所述類名列表用于記錄無需獲取指令偏移值的方法指針對應的類名;
將所述描述信息中包括的方法所在類名與所述類名列表進行匹配,以在匹配不成功的情況下,執行所述指令偏移值獲取功能模塊GetDexPc對應的代碼段。
7.根據權利要求1所述的方法,其特征在于,基于所述第一內存區域的首地址,執行目標信息獲取功能模塊對應的代碼段,包括:
基于所述預設目標回調功能模塊對應的代碼段的執行次數,確定當前回溯的棧幀的層級;
如果所述當前回溯的棧幀的層級屬于預設需求層級,則基于所述第一內存區域的首地址,執行目標信息獲取功能模塊對應的代碼段。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京字節跳動網絡技術有限公司,未經北京字節跳動網絡技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110303889.0/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種工程造價用報表整理裝置
- 下一篇:半導體管道用加熱器





