[發明專利]用于獲取調用棧中棧幀信息的方法、裝置、設備和介質有效
| 申請號: | 202110303887.1 | 申請日: | 2021-03-22 |
| 公開(公告)號: | CN112905381B | 公開(公告)日: | 2022-12-06 |
| 發明(設計)人: | 劉洪凱 | 申請(專利權)人: | 北京字節跳動網絡技術有限公司 |
| 主分類號: | G06F11/07 | 分類號: | G06F11/07 |
| 代理公司: | 北京開陽星知識產權代理有限公司 11710 | 代理人: | 祝樂芳 |
| 地址: | 100041 北京市石景山區*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 用于 獲取 調用 棧中棧幀 信息 方法 裝置 設備 介質 | ||
本公開實施例涉及一種用于獲取調用棧中棧幀信息的方法、裝置、設備和介質,該方法包括:獲取程序運行過程中存在異常的待處理調用棧;待處理調用棧的每個區域單元中包括方法指針以及與方法指針對應的指令偏移值;申請第一內存區域,用于存儲方法指針以及對應的指令偏移值;申請第二內存區域;將第一內存區域的地址存入第二內存區域中的第一個區域單元;申請第三內存區域,并將第二內存區域的地址存入第三內存區域中的目標存儲區域;基于目標存儲區域存儲的第二內存區域的地址,執行棧幀信息獲取功能模塊getStackTrace對應的代碼段,獲取待處理調用棧中各棧幀的信息。本公開實施例實現了穩定地獲取調用棧中棧幀的詳細信息,且兼容性高。
技術領域
本公開涉及計算機技術領域,尤其涉及一種用于獲取調用棧中棧幀信息的方法、裝置、設備和介質。
背景技術
在應用程序運行過程中,通過?;厮?,可以得到每個棧幀包括的方法指針(例如ArtMethod的指針)和指令偏移值(DexPc),但是不能直接得到描述當前方法的詳細信息,例如方法名和源碼行號等信息。
為了得到描述方法的詳細信息,在現有方案中,一方面,可以將方法(例如ArtMethod)指針作為參數調用PrettyMethod函數得到其相應方法的字符串描述信息;另一方面,可以通過一些底層技術得到方法對應的dex_file信息,然后基于dex_file信息獲取方法所在類名、方法名等信息。
然而,前述第一種方法中,只能得到方法的名字信息,無法得到其相應的行號信息,進而不能快速定位源碼位置;前述第二種方法中,由于需求采用較多底層技術,實現復雜,穩定性難以保證,并且針對不同系統版本的兼容性也存在不確定因素,可能需要涉及較大的適配工作量。
發明內容
為了解決上述技術問題或者至少部分地解決上述技術問題,本公開實施例提供了一種用于獲取調用棧中棧幀信息的方法、裝置、設備和介質。
第一方面,本公開實施例提供了一種用于獲取調用棧中棧幀信息的方法,包括:
獲取程序運行過程中存在異常的待處理調用棧;其中,所述待處理調用棧的每個區域單元中包括方法指針以及與所述方法指針對應的指令偏移值,所述待處理調用棧的區域單元總個數為N;
申請第一內存區域;其中,所述第一內存區域的前半部分區域單元用于存儲所述方法指針,所述第一內存區域的后半部分區域單元用于存儲與所述方法指針對應的指令偏移值,所述第一內存區域的區域單元總個數為2N;
獲取所述第一內存區域的地址;
申請第二內存區域,并將所述第一內存區域的地址存入所述第二內存區域中的第一個區域單元;其中,所述第二內存區域的區域單元總個數為N+1;
獲取所述第二內存區域的地址;
申請第三內存區域,并獲取所述第三內存區域中的目標存儲區域,將所述第二內存區域的地址存入所述目標存儲區域;
基于所述目標存儲區域存儲的所述第二內存區域的地址,執行棧幀信息獲取功能模塊getStackTrace對應的代碼段,獲取所述待處理調用棧中各棧幀的信息。
第二方面,本公開實施例還提供了一種用于獲取調用棧中棧幀信息的裝置,包括:
調用棧獲取模塊,用于獲取程序運行過程中存在異常的待處理調用棧;其中,所述待處理調用棧的每個區域單元中包括方法指針以及與所述方法指針對應的指令偏移值,所述待處理調用棧的區域單元總個數為N;
第一內存申請模塊,用于申請第一內存區域;其中,所述第一內存區域的前半部分區域單元用于存儲所述方法指針,所述第一內存區域的后半部分區域單元用于存儲與所述方法指針對應的指令偏移值,所述第一內存區域的區域單元總個數為2N;
第一地址獲取模塊,用于獲取所述第一內存區域的地址;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京字節跳動網絡技術有限公司,未經北京字節跳動網絡技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110303887.1/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:供電控制系統及供電控制方法
- 下一篇:一種基于ABO基因的血型分型方法





