本申請(qǐng)主要涉及計(jì)算機(jī)軟件開發(fā),特別是涉及一種進(jìn)程監(jiān)控方法、電子設(shè)備、存儲(chǔ)介質(zhì)以及程序產(chǎn)品。
背景技術(shù):
1、linux(linux?is?not?unix),一般指gnu/linux,是一種開源且免費(fèi)的操作系統(tǒng)內(nèi)核,是由芬蘭計(jì)算機(jī)科學(xué)家linus?torvalds于1991年開始編寫,并在其后的幾年中不斷完善和發(fā)展而來。linux最初是作為個(gè)人電腦使用的,但現(xiàn)在已經(jīng)成為了許多服務(wù)器、移動(dòng)設(shè)備、超級(jí)計(jì)算機(jī)等各種類型的硬件設(shè)備上的主要操作系統(tǒng)。linux是一種自由和開放源碼的類unix操作系統(tǒng),基于其低廉成本與高度可設(shè)置性,linux常常被應(yīng)用于嵌入式系統(tǒng),例如機(jī)頂盒、移動(dòng)電話及移動(dòng)設(shè)備等,而在移動(dòng)電話上,基于linux的android已經(jīng)成為ios的主要競(jìng)爭(zhēng)者。
2、軟件系統(tǒng)開發(fā)時(shí)經(jīng)常會(huì)遇到各種問題,如何找到導(dǎo)致這些問題的根本原因是系統(tǒng)開發(fā)工程師經(jīng)常遇到的難題。通常采用離線調(diào)試和現(xiàn)場(chǎng)調(diào)試的方式進(jìn)行問題分析;其中,離線調(diào)試在問題出現(xiàn)后通過分析日志定位問題,但是如果日志較多則會(huì)占用較多的cpu資源并影響運(yùn)行效率,日志較少又不容易定位問題,因此經(jīng)常會(huì)用一些變量來控制日志是否輸出,無(wú)法實(shí)現(xiàn)動(dòng)態(tài)控制這些用于調(diào)試問題的變量;而現(xiàn)場(chǎng)調(diào)試將調(diào)試信息記錄在某些變量中(例如記錄程序當(dāng)前執(zhí)行的狀態(tài)),在出現(xiàn)問題的時(shí)候打印這些變量的值來定位問題,這些變量可能很多,頻繁打印也會(huì)影響性能,使用gdb進(jìn)行現(xiàn)場(chǎng)調(diào)試也會(huì)影響原進(jìn)程的執(zhí)行效率;而linux系統(tǒng)中每個(gè)進(jìn)程都有獨(dú)立的虛擬地址空間,因此其他應(yīng)用程序無(wú)法直接訪問這些變量,無(wú)法在出現(xiàn)問題時(shí)直接打印這些變量的值。
技術(shù)實(shí)現(xiàn)思路
1、本申請(qǐng)的是主要目的是提供一種進(jìn)程監(jiān)控方法、電子設(shè)備、存儲(chǔ)介質(zhì)以及程序產(chǎn)品以解決在進(jìn)行問題分析時(shí),無(wú)法同時(shí)實(shí)時(shí)動(dòng)態(tài)的控制調(diào)試問題的變量以及在出現(xiàn)問題時(shí)打印這些變量并且解決效率不高的問題。
2、為解決上述問題,本申請(qǐng)?zhí)峁┮环N進(jìn)程監(jiān)控方法,該進(jìn)程監(jiān)控方法包括:獲取第一進(jìn)程中目標(biāo)變量的第一變量信息,第一變量信息包括變量名稱和用戶虛擬地址;確定用戶虛擬地址對(duì)應(yīng)的物理地址;確定物理地址對(duì)應(yīng)的內(nèi)核虛擬地址;根據(jù)變量名稱和內(nèi)核虛擬地址確定目標(biāo)變量的第二變量信息,以根據(jù)第二變量信息對(duì)目標(biāo)變量進(jìn)行監(jiān)控。
3、在一實(shí)施例中,確定用戶虛擬地址對(duì)應(yīng)的物理地址,包括:獲取進(jìn)程頁(yè)表;在進(jìn)程頁(yè)表中查找用戶虛擬地址對(duì)應(yīng)的物理地址。
4、在一實(shí)施例中,確定物理地址對(duì)應(yīng)的內(nèi)核虛擬地址,包括:獲取內(nèi)核空間頁(yè)表;在內(nèi)核空間頁(yè)表中查找物理地址對(duì)應(yīng)的內(nèi)核虛擬地址。
5、在一實(shí)施例中,進(jìn)程監(jiān)控方法還包括:獲取第二進(jìn)程發(fā)送的調(diào)試指令,調(diào)試指令至少包括變量名稱;根據(jù)變量名稱確定對(duì)應(yīng)的第二變量信息;根據(jù)調(diào)試指令和第二變量信息對(duì)第一進(jìn)程的目標(biāo)變量進(jìn)行調(diào)試。
6、在一實(shí)施例中,根據(jù)調(diào)試指令和第二變量信息對(duì)第一進(jìn)程的目標(biāo)變量進(jìn)行調(diào)試,包括:根據(jù)第二變量信息查找第一進(jìn)程的目標(biāo)變量;根據(jù)調(diào)試指令對(duì)目標(biāo)變量進(jìn)行調(diào)試。
7、在一實(shí)施例中,根據(jù)第二變量信息查找第一進(jìn)程的目標(biāo)變量,包括:根據(jù)第二進(jìn)程傳遞的變量名稱獲取其對(duì)應(yīng)的用戶虛擬地址;確定用戶虛擬地址對(duì)應(yīng)的物理地址;根據(jù)物理地址查找對(duì)應(yīng)的第一進(jìn)程的目標(biāo)變量的內(nèi)核虛擬地址,以對(duì)目標(biāo)變量進(jìn)行調(diào)試。
8、在一實(shí)施例中,調(diào)試指令還包括設(shè)定變量值;根據(jù)調(diào)試指令對(duì)目標(biāo)變量進(jìn)行調(diào)試,包括:將目標(biāo)變量的值修改為設(shè)定變量值。
9、為解決上述問題,本申請(qǐng)還提供一種電子設(shè)備,該電子設(shè)備包括:獲取模塊,用于獲取第一進(jìn)程中目標(biāo)變量的第一變量信息,所述第一變量信息包括變量名稱和用戶虛擬地址;地址轉(zhuǎn)換模塊,用于確定所述用戶虛擬地址對(duì)應(yīng)的物理地址,以及確定所述物理地址對(duì)應(yīng)的內(nèi)核虛擬地址;確定模塊,用于根據(jù)所述變量名稱和所述內(nèi)核虛擬地址確定所述目標(biāo)變量的第二變量信息,以根據(jù)所述第二變量信息對(duì)所述目標(biāo)變量進(jìn)行監(jiān)控。
10、為解決上述問題,本申請(qǐng)還提供一種電子設(shè)備,該電子設(shè)備包括:處理器和存儲(chǔ)器,其中,存儲(chǔ)器中存儲(chǔ)有程序數(shù)據(jù),處理器用于執(zhí)行所述程序數(shù)據(jù)以實(shí)現(xiàn)如上述實(shí)施例中任一項(xiàng)實(shí)施例所描述的進(jìn)程監(jiān)控方法。
11、為解決上述問題,本申請(qǐng)還提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)用于存儲(chǔ)程序數(shù)據(jù),程序數(shù)據(jù)在被處理器執(zhí)行時(shí)用以實(shí)現(xiàn)如上述實(shí)施例中任一項(xiàng)實(shí)施例所描述的進(jìn)程監(jiān)控方法。
12、為解決上述問題,本申請(qǐng)還提供一種計(jì)算機(jī)程序產(chǎn)品,其中該計(jì)算機(jī)程序產(chǎn)品被處理器執(zhí)行時(shí),用以實(shí)現(xiàn)如下的進(jìn)程監(jiān)控方法:
13、獲取第一進(jìn)程中目標(biāo)變量的第一變量信息,第一變量信息包括變量名稱和用戶虛擬地址;確定用戶虛擬地址對(duì)應(yīng)的物理地址;確定物理地址對(duì)應(yīng)的內(nèi)核虛擬地址;根據(jù)變量名稱和內(nèi)核虛擬地址確定目標(biāo)變量的第二變量信息,以根據(jù)第二變量信息對(duì)目標(biāo)變量進(jìn)行監(jiān)控。
14、通過上述方式,利用驅(qū)動(dòng)通過虛擬地址獲取其對(duì)應(yīng)的物理地址,然后將此物理地址重新映射到內(nèi)核的虛擬地址空間,以實(shí)現(xiàn)變量在用戶空間的虛擬地址和內(nèi)核空間的虛擬地址都指向?qū)嶋H內(nèi)存中的同一個(gè)位置,進(jìn)而實(shí)現(xiàn)動(dòng)態(tài)的實(shí)時(shí)監(jiān)控,以實(shí)現(xiàn)在監(jiān)測(cè)變量時(shí)無(wú)需調(diào)用其他任何接口,直接正常使用變量,以提高開發(fā)人員的開發(fā)效率。
1.一種進(jìn)程監(jiān)控方法,其特征在于,所述進(jìn)程監(jiān)控方法包括:
2.根據(jù)權(quán)利要求1所述的進(jìn)程監(jiān)控方法,其特征在于,所述確定所述用戶虛擬地址對(duì)應(yīng)的物理地址,包括:
3.根據(jù)權(quán)利要求1所述的進(jìn)程監(jiān)控方法,其特征在于,所述確定所述物理地址對(duì)應(yīng)的內(nèi)核虛擬地址,包括:
4.根據(jù)權(quán)利要求1所述的進(jìn)程監(jiān)控方法,其特征在于,所述進(jìn)程監(jiān)控方法還包括:
5.根據(jù)權(quán)利要求4所述的進(jìn)程監(jiān)控方法,其特征在于,所述根據(jù)所述調(diào)試指令和所述第二變量信息對(duì)所述第一進(jìn)程的所述目標(biāo)變量進(jìn)行調(diào)試,包括:
6.根據(jù)權(quán)利要求4所述的進(jìn)程監(jiān)控方法,其特征在于,所述根據(jù)所述第二變量信息查找所述第一進(jìn)程的所述目標(biāo)變量,包括:
7.根據(jù)權(quán)利要求4所述的進(jìn)程監(jiān)控方法,其特征在于,所述調(diào)試指令還包括設(shè)定變量值;
8.一種電子設(shè)備,其特征在于,所述電子設(shè)備包括:
9.一種電子設(shè)備,其特征在于,所述電子設(shè)備包括處理器和存儲(chǔ)器,所述存儲(chǔ)器中存儲(chǔ)有程序數(shù)據(jù),所述處理器用于執(zhí)行所述程序數(shù)據(jù)以實(shí)現(xiàn)如權(quán)利要求1-7任一項(xiàng)所述的進(jìn)程監(jiān)控方法。
10.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)用于存儲(chǔ)程序數(shù)據(jù),所述程序數(shù)據(jù)在被處理器執(zhí)行時(shí)用以實(shí)現(xiàn)如權(quán)利要求1-7任一項(xiàng)所述的進(jìn)程監(jiān)控方法。
11.一種計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述計(jì)算機(jī)程序產(chǎn)品被處理器執(zhí)行時(shí),用以實(shí)現(xiàn)如權(quán)利要求1-7任一項(xiàng)所述的進(jìn)程監(jiān)控方法。