[發明專利]一種函數運行的追蹤方法和裝置在審
| 申請號: | 201810594578.2 | 申請日: | 2018-06-11 |
| 公開(公告)號: | CN108959069A | 公開(公告)日: | 2018-12-07 |
| 發明(設計)人: | 趙立飛;吳金貴 | 申請(專利權)人: | 北京奇藝世紀科技有限公司 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 北京潤澤恒知識產權代理有限公司 11319 | 代理人: | 莎日娜 |
| 地址: | 100080 北京市海淀*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 追蹤 方法和裝置 程序調試系統 函數參數 目標程序 可執行代碼 調用 調試 后臺 發送 返回 記錄 出口 應用 | ||
本發明實施例提供了一種函數運行的追蹤方法和裝置,該方法和裝置應用于程序調試系統,具體為在被追蹤的目標程序在調試為可執行代碼前,在所述目標程序中每個函數的入口和出口插入預先編寫的追蹤代碼,所述追蹤代碼用于向所述程序調試系統的后臺發送所述函數的運行時間、函數名和/或函數參數;在調用所述函數時,執行所述追蹤代碼;記錄所述追蹤代碼被執行時所返回的所述運行時間、所述函數名和/或所述函數參數。通過追蹤代碼的執行,從而達到了追蹤函數運行的目的。
技術領域
本發明涉及程序開發技術領域,特別是涉及一種函數運行的追蹤方法和裝置。
背景技術
函數,又稱方法或子程序,是一個完整程序中的某部分代碼,由一個或多個語句塊組成。它負責完成某項特定任務,而且相較于其他代碼,具備相對的獨立性。函數一般會有輸入參數并有返回值,其提供對特定處理過程的封裝和細節的隱藏。為便于表達,本申請中將“方法”或“子程序”稱統稱“函數”。
追蹤函數運行是指對函數運行的軌跡進行記錄,記錄的信息包括函數調用棧、調用每個函數時傳遞的參數、每個函數運行的時長等。這些信息可以清晰地反映函數運行的具體軌跡,也可以反映函數運行的各個環節的耗時情況。追蹤函數運行是軟件開發中的一個重要技術,為漏洞解決和性能優化提供重要幫助。目前還沒有有效的方法對函數進行追蹤。
發明內容
有鑒于此,本發明提供了一種函數運行的追蹤方法和裝置,以解決在對程序進行調試過程中無法對函數進行有效追蹤的問題。
為了解決上述問題,本發明公開了一種函數運行的追蹤方法,應用于程序調試系統,所述追蹤方法包括步驟:
在被追蹤的目標程序在調試為可執行代碼前,在所述目標程序中每個函數的入口和出口插入預先編寫的追蹤代碼,所述追蹤代碼用于向所述程序調試系統的后臺發送所述函數的運行時間、函數名和/或函數參數;
在調用所述函數時,執行所述追蹤代碼;
記錄所述追蹤代碼被執行時所返回的所述運行時間、所述函數名和/或所述函數參數。
可選的,所述在所述目標程序中每個函數的入口和出口插入預先編寫的追蹤代碼,包括:
確定所述入口的位置,并確定所述出口的位置;
將所述追蹤代碼插入到所述入口的位置和所述出口的位置。
可選的,所述并確定所述出口的位置,包括:
將所述函數的返回指令確定為所述出口的位置;
或者,在所述函數的異常拋出點外部套接一個try…catch塊,將所述try…catch塊的末尾的異常處理模塊作為所述出口的位置。
可選的,所述函數的所有代碼外部套接一個try…catch塊,包括:
將所述函數的所有指令讀入到內存中;
從后向前尋找最后一條返回指令,將所述最后一條至所述最后一條返回指令作為所述try…catch塊的try部分,在catch部分直接記錄函數出口信息,并利用所述異常處理模塊將捕捉到的異常拋出。
可選的,還包括步驟:
以樹的方式顯示被返回的所述運行時間、所述函數名和/或所述函數參數。
相應的,為了保證上述方法的實施,本發明還提供了一種函數運行的追蹤裝置,應用于程序調試系統,所述追蹤裝置包括:
代碼插入模塊,用于在被追蹤的目標程序在調試為可執行代碼前,在所述目標程序中每個函數的入口和出口插入預先編寫的追蹤代碼,所述追蹤代碼用于向所述程序調試系統的后臺發送所述函數的運行時間、函數名和/或函數參數;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京奇藝世紀科技有限公司,未經北京奇藝世紀科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201810594578.2/2.html,轉載請聲明來源鉆瓜專利網。





