[發明專利]一種linux內核跟蹤調試與修復問題的方法在審
| 申請號: | 201510330712.4 | 申請日: | 2015-06-15 |
| 公開(公告)號: | CN104915209A | 公開(公告)日: | 2015-09-16 |
| 發明(設計)人: | 李智榮 | 申請(專利權)人: | 上海斐訊數據通信技術有限公司 |
| 主分類號: | G06F9/44 | 分類號: | G06F9/44 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 201616 *** | 國省代碼: | 上海;31 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 linux 內核 跟蹤 調試 修復 問題 方法 | ||
技術領域
本發明涉及以太網交換機技術領域,尤其涉及一種linux內核跟蹤調試與修復問題的方法。
背景技術
當前潛入式linux涉及內核的問題調試手段主要是重新編譯整個內核或者使用KGDB(kernel?GNU?Debugger)軟件。重新編譯整個內核耗時比較長,而KGDB軟件搭建環境比較繁雜且需要內核支持。更為重要的是這兩種方法需要升級設備系統版本,然后重啟動系統才能修復問題,這在某些情況下是不允許的,如某些客戶重要網絡不允許斷網。
現有的涉及嵌入式linux內核的問題跟蹤、調試及修復的方法主要存在以下問題:重新編譯整個linux內核需要重新燒錄、重啟動設備系統且耗時比較長。使用KGDB除了搭建環境復雜之外,無法支持改動比較大的修改。
發明內容
本發明需解決的技術問題是克服上述的不足,提供一種linux內核跟蹤調試與修復問題的方法,包括:
修改問題函數,在問題函數原函數名前添加前綴,定義為修復函數;
創建驅動模塊;
把驅動模塊安裝到系統設備中;
在驅動模塊的初始化函數里面查找模塊內部定義的帶有所述前綴的修復函數;
在內核符號表中查找問題函數與修復函數的函數地址,修改問題函數的入口指令,跳轉到修復函數執行。
進一步的,所述的前綴為prefix_。
進一步的,所述創建驅動模塊的步驟具體為編譯所述修復函數鏈接為驅動模塊。
進一步的,所述驅動模塊命名為linux_kernel.ko。
進一步的,所述方法還包括:
在修改指令前先將舊的指令保存到一個數組中;
卸載驅動模塊時從所述數組中恢復修改前的指令,恢復原來函數的調用流程。
采用本發明的技術方案后,將問題函數修改代碼編譯鏈接成一個linux驅動模塊,在驅動模塊內標識需要修改的內核函數,在linux內核加載驅動模塊時,查找到所述驅動模塊所標識的內核內部函數,然后修改這個函數的入口指令,跳轉到我們的驅動模塊定義的修復函數執行,這樣便可以在這個修復函數里邊跟蹤、調試及修復問題,解決了以往調試修復困難的問題,提高了效率。
附圖說明
圖1是本發明提供的linux內核跟蹤調試與修復問題的方法示意圖;
圖2是本發明提供的linux內核原函數調用關系示意圖;
圖3是本發明提供的linux內核函數調用關系示意圖。
具體實施方式
為了使本領域相關技術人員更好地理解本發明的技術方案,下面將結合本發明實施方式的附圖,對本發明實施方式中的技術方案進行清楚、完整地描述,顯然,所描述的實施方式僅僅是本發明一部分實施方式,而不是全部的實施方式。
下面結合附圖和實施方式對本發明作進一步說明。
參閱圖1,本發明提供的一種linux內核跟蹤調試與修復問題的方法,包括下列步驟:
步驟S100,修改問題函數,在問題函數原函數名前添加前綴,定義為修復函數;
如圖2所示,遠linux內核的函數調用流程為:function_a→function_b→function_c。現在假如function_b出現問題需要修復調試,則將問題函數function_b拷貝到一個新的原文件,修改所述問題函數function_b。修改完成后,重新命名,在原函數名前加前綴,本實施例中,前綴為prefix_,即prefix_function_b,定義prefix_function_b為修復函數。
步驟S200,創建驅動模塊;
具體的,編譯上述修復函數prefix_function_b鏈接為驅動模塊,將驅動模塊命名為linux_kernel.ko。
步驟S300,把驅動模塊安裝到系統設備中;
把步驟S200生成的linux_kernel.ko安裝到系統設備中。
步驟S400,在驅動模塊的初始化函數里面查找模塊內部定義的帶有所述前綴的修復函數;
在linux_kernel.ko的初始化函數里面查找驅動模塊內部定義的,名字帶有步驟S100中的前綴的函數,本實施例中,查找到prefix_function_b,通過前綴“prefix_”便會認為prefix_function_b是用來修復函數function_b的。
步驟S500,在內核符號表中查找問題函數與修復函數的函數地址,修改問題函數的入口指令,跳轉到修復函數執行。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于上海斐訊數據通信技術有限公司,未經上海斐訊數據通信技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201510330712.4/2.html,轉載請聲明來源鉆瓜專利網。





