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