[發明專利]一種分析函數棧大小的方法在審
| 申請號: | 201410844223.6 | 申請日: | 2014-12-25 |
| 公開(公告)號: | CN104572094A | 公開(公告)日: | 2015-04-29 |
| 發明(設計)人: | 鐘捷群 | 申請(專利權)人: | 上海斐訊數據通信技術有限公司 |
| 主分類號: | G06F9/44 | 分類號: | G06F9/44 |
| 代理公司: | 上海申新律師事務所 31272 | 代理人: | 俞滌炯 |
| 地址: | 201616 上海*** | 國省代碼: | 上海;31 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 分析 函數 大小 方法 | ||
技術領域
本發明涉及嵌入式系統技術領域,尤其涉及一種分析函數棧大小的方法。
背景技術
vxWorks操作系統是以任務為調度單位,每個任務有單獨的棧空間。棧是任務的一個緩存區,在任務創建時根據指定大小從內存中分配。C語言函數局部變量、部分函數參數等都會存放在棧中,因此,每個函數都需要占用一定大小的棧緩存。當一個任務函數調用鏈中所有函數使用的棧緩存超過任務的棧大小時,導致棧溢出。棧溢出會導致非法修改其他地址的內存內容,給系統帶來不可預知的問題,甚至崩潰。
因此必須要查詢使用棧緩存超過指定大小的函數,并且把這些函數作為可能存在隱患的風險點,可以使用其他的方法進行進一步分析,以排除風險點。
目前沒有查詢到該功能的具體實現方法,但通常是采用類似c語言的編譯型語言編碼,編譯鏈接生成可執行文件;然后通過執行可執行文件得到查詢結果。
但是,編譯型語言編碼復雜,且針對不同的硬件(cpu)平臺需要分別編譯鏈接,這些均是本領域技術人員所不期望見到的。
發明內容
鑒于上述問題,本發明提供一種分析函數棧大小的方法,通過該方法可以生成超過指定棧大小的所有函數列表,根據列表信息可以通過分析相應函數源碼,以提前識別出潛在的棧溢出風險。
本發明解決上述技術問題所采用的技術方案為:
一種分析函數棧大小的方法,其中,所述方法包括:
步驟S1、提供一初始文件,所述初始文件具有若干聲明函數行,以及部分所述聲明函數行所對應的棧緩存行;每個所述聲明函數行中均包括有聲明函數的函數名稱,每個所述棧緩存行中均包括有用于緩存的棧的大小;
步驟S2、對所述初始文件添加行號,以生成第一文件;
步驟S3、提取所述第一文件中的所述聲明函數行,以生成第一合并文件;提取所述第一文件中的所述棧緩存行,以生成第二合并文件;
步驟S4、根據行號排列的順序,將所述第一合并文件和所述第二合并文件進行合并,以生成第二文件;
步驟S5、提取所述第二文件中的各所述棧緩存行和每個所述棧緩存行所對應的聲明函數行,以生成第三文件;
步驟S6、提取所述第三文件中的函數名稱和棧大小,并將每個所述函數名稱和對應該函數名稱的棧大小進行輸出,以生成第四文件;
步驟S7、提取所述第四文件中棧大小大于或等于預定值的聲明函數,以生成列表輸出文件。
較佳的,上述的分析函數棧大小的方法,其中,所述方法還包括:
步驟S8、刪除所述第一文件、所述第二文件、所述第三文件和所述第四文件。
較佳的,上述的分析函數棧大小的方法,其中,所述初始文件為反匯編文件。
較佳的,上述的分析函數棧大小的方法,其中,所述棧緩存行位于該棧緩存行所對應的聲明函數行之下排列。
較佳的,上述的分析函數棧大小的方法,其中,步驟S2中,根據所述行號由小到大的排列順序對所述初始文件添加行號。
較佳的,上述的分析函數棧大小的方法,其中,步驟S4中,根據所述行號由小到大的排列順序,將所述第一合并文件和所述第二合并文件進行合并,以生成所述第二文件。
較佳的,上述的分析函數棧大小的方法,其中,步驟S6中,將每個所述函數名稱和對應該函數名稱的棧大小以單行的形式進行輸出,以生成所述第四文件。
較佳的,上述的分析函數棧大小的方法,其中,步驟S7中,所述預定值為3000字節。
較佳的,上述的分析函數棧大小的方法,其中,所述方法還包括:
組合使用工具cat、grep、sort、sed或awk依次進行步驟S2~S7,以完成對所述函數棧大小的分析。
較佳的,上述的分析函數棧大小的方法,其中,所述方法還包括:
采用shell腳本語言,并組合使用工具cat、grep、sort、sed或awk依次進行步驟S2~S7,以完成對所述函數棧大小的分析。
上述技術方案具有如下優點或有益效果:
本發明公開了一種分析函數棧大小的方法,使用現成的工具sed、awk等和shell腳本語言(解釋型語言)來實現預期功能特性,這些現成的工具在不同硬件平臺上都已經有相應的執行程序,其中采用腳本語言編碼簡單,不需編譯鏈接,可跨平臺直接運行,進而通過該方法可以生成超過指定棧大小的所有函數列表,根據列表信息可以通過分析相應函數源碼,以提前識別出潛在的棧溢出風險。
具體附圖說明
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于上海斐訊數據通信技術有限公司,未經上海斐訊數據通信技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410844223.6/2.html,轉載請聲明來源鉆瓜專利網。





