本發(fā)明涉及輕量級跟蹤內(nèi)核函數(shù)執(zhí)行狀態(tài)的,具體涉及一種linux中動態(tài)管理探測點的方法、系統(tǒng)及介質(zhì)。
背景技術(shù):
1、目前,kprobes是linux內(nèi)核提供的一種輕量級跟蹤內(nèi)核函數(shù)執(zhí)行狀態(tài)的技術(shù),可以在內(nèi)核函數(shù)執(zhí)行前后注冊探測點,實現(xiàn)對內(nèi)核函數(shù)的動態(tài)監(jiān)控,收集所需的信息。當(dāng)用戶已經(jīng)收集足夠的信息,不再需要繼續(xù)探測,則同樣可以動態(tài)的注銷探測點。通過kprobes,用戶可以在不改變源代碼的情況下,實現(xiàn)對目標(biāo)函數(shù)的跟蹤與分析,有助于調(diào)試、性能優(yōu)化等場景下的應(yīng)用。
2、然而,在基于kprobes技術(shù)的內(nèi)核層開發(fā)應(yīng)用中,只能事先注冊探測點,事后注銷探測點,靈活性不夠,滿足不了在不重啟內(nèi)核層的情況下隨時注冊和注銷探測點的需求。
技術(shù)實現(xiàn)思路
1、針對現(xiàn)有技術(shù)中的缺陷,本發(fā)明的目的是提供的一種linux中動態(tài)管理探測點的方法、系統(tǒng)及介質(zhì),以解決現(xiàn)有技術(shù)中存在的缺陷。
2、第一方面,本發(fā)明實施例提供了一種linux中動態(tài)管理探測點的方法,應(yīng)用于linux中的內(nèi)核層,所述方法包括:
3、預(yù)先定義各種探測點;
4、定義與linux中應(yīng)用層通信的數(shù)據(jù)結(jié)構(gòu);
5、創(chuàng)建虛擬文件,指定所述虛擬文件的訪問權(quán)限以及對應(yīng)的回調(diào)函數(shù);其中,所述回調(diào)函數(shù)用于所述應(yīng)用層讀或者寫所述虛擬文件與內(nèi)核層進(jìn)行數(shù)據(jù)交換;
6、基于所述回調(diào)函數(shù)接收的應(yīng)用層的數(shù)據(jù)對探測點進(jìn)行動態(tài)管理;其中,所述動態(tài)管理包括對探測點的注冊、注銷、使能和失能操作。
7、作為本申請的一種優(yōu)選實現(xiàn)方式,所述方法還包括:
8、若是注銷探測點操作,則在注銷成功后需進(jìn)行探測點的結(jié)構(gòu)清理。
9、作為本申請的一種優(yōu)選實現(xiàn)方式,所述回調(diào)函數(shù)接收到應(yīng)用層的數(shù)據(jù)后,還對數(shù)據(jù)進(jìn)行解析并驗證其正確性。
10、作為本申請的一種具體實現(xiàn)方式,所述指定所述虛擬文件的訪問權(quán)限為應(yīng)用層用戶可讀寫。
11、第二方面,本發(fā)明實施例提供了另一種linux中動態(tài)管理探測點的方法,應(yīng)用于linux中的應(yīng)用層,所述方法包括:
12、定義與linux中內(nèi)核層通信的數(shù)據(jù)結(jié)構(gòu);
13、根據(jù)用戶指定的策略或者配置構(gòu)建數(shù)據(jù),以實現(xiàn)對所述數(shù)據(jù)結(jié)構(gòu)的填充;
14、調(diào)用應(yīng)用層的open方法以讀寫方式打開虛擬文件;其中,所述虛擬文件由所述內(nèi)核層創(chuàng)建,并為所述虛擬文件指定有對應(yīng)的訪問權(quán)限以及回調(diào)函數(shù);
15、調(diào)用應(yīng)用層的write方法將數(shù)據(jù)發(fā)送給所述內(nèi)核層;
16、當(dāng)應(yīng)用層配置完成后,調(diào)用應(yīng)用層的close方法關(guān)閉所述虛擬文件。
17、作為本申請的一種具體實現(xiàn)方式,所述應(yīng)用層中包括應(yīng)用程序,根據(jù)用戶指定的策略或者配置構(gòu)建數(shù)據(jù),具體包括:
18、用戶通過界面配置策略規(guī)則,并下發(fā)給所述應(yīng)用程序;
19、所述應(yīng)用程序收到界面下發(fā)的策略規(guī)則后組織數(shù)據(jù)結(jié)構(gòu);
20、或用戶直接配置所述應(yīng)用程序,給所述應(yīng)用程序傳遞相關(guān)探測點的控制信息參數(shù);
21、所述應(yīng)用程序處理所述控制信息參數(shù)后組織數(shù)據(jù)結(jié)構(gòu)。
22、第三方面,本發(fā)明實施例還提供了一種linux中動態(tài)管理探測點的系統(tǒng),所述系統(tǒng)包括內(nèi)核層和應(yīng)用層;
23、所述內(nèi)核層用于預(yù)先定義各種探測點以及與應(yīng)用層通信的數(shù)據(jù)結(jié)構(gòu),并創(chuàng)建虛擬文件指定所述虛擬文件的訪問權(quán)限以及對應(yīng)的回調(diào)函數(shù);
24、所述應(yīng)用層用于根據(jù)用戶指定的策略或者配置構(gòu)建數(shù)據(jù),通過讀或?qū)懰鎏摂M文件與內(nèi)核層進(jìn)行數(shù)據(jù)交換;使得所述內(nèi)核層基于所述回調(diào)函數(shù)接收的應(yīng)用層的數(shù)據(jù)對探測點進(jìn)行動態(tài)管理。
25、第四方面,本發(fā)明實施例還提供一種計算機(jī)可讀存儲介質(zhì),所述計算機(jī)可讀存儲介質(zhì)存儲有計算機(jī)程序,所述計算機(jī)程序包括程序指令,所述程序指令當(dāng)被處理器執(zhí)行時使所述處理器執(zhí)行上述實施例描述的方法。
26、本發(fā)明實施例提供的技術(shù)方案,通過將探測點技術(shù)與虛擬文件相結(jié)合,利用所述虛擬文件實現(xiàn)內(nèi)核層與應(yīng)用層的通信與數(shù)據(jù)交換,實現(xiàn)了對探測點動態(tài)管理,滿足了在不重啟內(nèi)核層的情況下對探測點的注冊、注銷或者使能、失能操作,提升了應(yīng)用的靈活性。
1.一種linux中動態(tài)管理探測點的方法,其特征在于,應(yīng)用于linux中的內(nèi)核層,所述方法包括:
2.如權(quán)利要求1所述的方法,其特征在于,所述方法還包括:
3.如權(quán)利要求1或2所述的方法,其特征在于,所述回調(diào)函數(shù)接收到應(yīng)用層的數(shù)據(jù)后,還對數(shù)據(jù)進(jìn)行解析并驗證其正確性。
4.如權(quán)利要求1所述的方法,其特征在于,所述指定所述虛擬文件的訪問權(quán)限為應(yīng)用層用戶可讀寫。
5.一種linux中動態(tài)管理探測點的方法,其特征在于,應(yīng)用于linux中的應(yīng)用層,所述方法包括:
6.如權(quán)利要5所述的方法,其特征在于,所述應(yīng)用層中包括應(yīng)用程序,根據(jù)用戶指定的策略或者配置構(gòu)建數(shù)據(jù),具體包括:
7.一種linux中動態(tài)管理探測點的系統(tǒng),其特征在于,所述系統(tǒng)包括內(nèi)核層和應(yīng)用層;
8.一種計算機(jī)可讀存儲介質(zhì),其特征在于,所述計算機(jī)可讀存儲介質(zhì)存儲有計算機(jī)程序,所述計算機(jī)程序包括程序指令,所述程序指令當(dāng)被處理器執(zhí)行時使所述處理器執(zhí)行如權(quán)利要求1或5所述的方法。