国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種進程監(jiān)控方法和裝置的制造方法

      文檔序號:8223394閱讀:178來源:國知局
      一種進程監(jiān)控方法和裝置的制造方法
      【技術領域】
      [0001]本發(fā)明涉及計算機技術領域,特別是涉及一種進程監(jiān)控方法和裝置。
      【背景技術】
      [0002]在Linux、Unix等操作系統(tǒng)中通常運行有多個進程。目前,在進程出現(xiàn)運行時間長、運行錯誤等問題時,需要通過監(jiān)控進程來分析問題的原因。
      [0003]現(xiàn)有方案可以將strace和pstack工具結合起來使用,直接用來找到影響進程運行時間的函數(shù)調(diào)用,再有針對地對相關函數(shù)進行代碼分析和優(yōu)化。其中,strace工具可以跟蹤進程使用的底層系統(tǒng)調(diào)用,可輸出系統(tǒng)調(diào)用被執(zhí)行的時間點以及各個調(diào)用的耗時;pstack工具可以對指定PID(進程ID,Process Identity)的進程輸出函數(shù)調(diào)用棧。
      [0004]PHP (超文本處理器,Hypertext Preprocessor)腳本是一種由PHP解釋器來執(zhí)行的進程,然而現(xiàn)有strace和pstack僅僅能夠提供PHP解釋器的系統(tǒng)調(diào)用信息,而無法提供PHP腳本的信息,因此,無法滿足PHP腳本的分析需求。

      【發(fā)明內(nèi)容】

      [0005]鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的一種進程監(jiān)控方法和裝置。
      [0006]依據(jù)本發(fā)明的一個方面,提供了一種進程監(jiān)控方法,包括:
      [0007]將PHP解釋器的操作執(zhí)行函數(shù)替換為預置的監(jiān)控函數(shù);以及
      [0008]利用所述監(jiān)控函數(shù)執(zhí)行所述PHP解釋器針對進程編譯得到的操作,且利用所述監(jiān)控函數(shù)監(jiān)控所述操作的執(zhí)行過程中的函數(shù)信息。
      [0009]可選地,所述利用所述監(jiān)控函數(shù)監(jiān)控所述操作的執(zhí)行過程中的函數(shù)信息的步驟進一步包括:
      [0010]根據(jù)待監(jiān)控信息對應變量相對預置全局變量的偏移量,獲取所述變量的地址;以及
      [0011]利用所述監(jiān)控函數(shù),監(jiān)控所述變量的地址在所述操作的執(zhí)行過程中的信息。
      [0012]可選地,在所述利用所述監(jiān)控函數(shù)執(zhí)行所述PHP解釋器針對進程編譯得到的操作,且利用所述監(jiān)控函數(shù)監(jiān)控所述操作的執(zhí)行過程中的函數(shù)信息的步驟之前,所述方法還包括:
      [0013]通過讀取共享內(nèi)存,判斷所述進程對應的監(jiān)控開關是否開啟;
      [0014]在所述進程對應的監(jiān)控開關開啟時,利用所述監(jiān)控函數(shù)執(zhí)行所述PHP解釋器針對進程編譯得到的操作,且利用所述監(jiān)控函數(shù)監(jiān)控所述操作的執(zhí)行過程中的函數(shù)信息;
      [0015]將所述函數(shù)信息寫入所述共享內(nèi)存,由命令行工具從所述共享內(nèi)存中讀取所述函數(shù)信息。
      [0016]可選地,所述將所述函數(shù)信息寫入所述共享內(nèi)存的步驟,包括:
      [0017]將所述函數(shù)信息寫入所述共享內(nèi)存中所述進程對應的內(nèi)存映射文件。
      [0018]可選地,所述方法還包括:
      [0019]利用pstack得到進程對應PHP解釋器的調(diào)用棧信息;以及
      [0020]依據(jù)所述PHP解釋器的全局成員變量,在所述PHP解釋器的調(diào)用棧信息中查找所述PHP解釋器執(zhí)行的各操作對應的函數(shù)調(diào)用棧信息。
      [0021 ] 可選地,所述依據(jù)所述PHP解釋器的全局變量,在所述PHP解釋器的調(diào)用棧信息中查找所述PHP解釋器執(zhí)行的各操作對應的函數(shù)調(diào)用棧信息的步驟進一步包括:
      [0022]依據(jù)PHP解釋器的操作執(zhí)行的上下文環(huán)境,得到所述PHP解釋器執(zhí)行的當前操作的操作執(zhí)行信息;以及
      [0023]依據(jù)所述PHP解釋器的全局變量和所述當前操作的操作執(zhí)行信息,在所述PHP解釋器的調(diào)用棧信息中查找所述PHP解釋器執(zhí)行的當前操作對應的函數(shù)調(diào)用棧信息。
      [0024]可選地,所述監(jiān)控開關的開啟和關閉由所述命令行工具控制。
      [0025]依據(jù)本發(fā)明的另一方面,提供了一種進程監(jiān)控裝置,包括:
      [0026]替換模塊,用于將PHP解釋器的操作執(zhí)行函數(shù)替換為預置的監(jiān)控函數(shù);以及
      [0027]監(jiān)控模塊,用于利用所述監(jiān)控函數(shù)執(zhí)行所述PHP解釋器針對進程編譯得到的操作,且利用所述監(jiān)控函數(shù)監(jiān)控所述操作的執(zhí)行過程中的函數(shù)信息。
      [0028]可選地,所述監(jiān)控模塊,進一步包括:
      [0029]地址獲取子模塊,用于根據(jù)待監(jiān)控信息對應變量相對預置全局變量的偏移量,獲取所述變量的地址;以及
      [0030]監(jiān)控子模塊,用于利用所述監(jiān)控函數(shù),監(jiān)控所述變量的地址在所述操作的執(zhí)行過程中的信息。
      [0031]可選地,所述裝置還包括:
      [0032]判斷模塊,用于在所述利用所述監(jiān)控函數(shù)執(zhí)行所述PHP解釋器針對進程編譯得到的操作,且利用所述監(jiān)控函數(shù)監(jiān)控所述操作的執(zhí)行過程中的函數(shù)信息的操作之前,通過讀取共享內(nèi)存,判斷所述進程對應的監(jiān)控開關是否開啟;
      [0033]則所述監(jiān)控模塊,具體用于在所述進程對應的監(jiān)控開關開啟時,利用所述監(jiān)控函數(shù)執(zhí)行所述PHP解釋器針對進程編譯得到的操作,且利用所述監(jiān)控函數(shù)監(jiān)控所述操作的執(zhí)行過程中的函數(shù)信息;
      [0034]則所述裝置還包括:
      [0035]寫入模塊,用于將所述函數(shù)信息寫入所述共享內(nèi)存,由命令行工具從所述共享內(nèi)存中讀取所述函數(shù)信息。
      [0036]可選地,所述寫入模塊,具體用于將所述函數(shù)信息寫入所述共享內(nèi)存中所述進程對應的內(nèi)存映射文件。
      [0037]可選地,所述裝置還包括:
      [0038]棧信息獲取模塊,用于利用pstack得到進程對應PHP解釋器的調(diào)用棧信息;以及
      [0039]查找模塊,用于依據(jù)所述PHP解釋器的全局成員變量,在所述PHP解釋器的調(diào)用棧信息中查找所述PHP解釋器執(zhí)行的各操作對應的函數(shù)調(diào)用棧信息。
      [0040]可選地,所述查找模塊,進一步包括:
      [0041 ] 操作獲取子模塊,用于依據(jù)PHP解釋器的操作執(zhí)行的上下文環(huán)境,得到所述PHP解釋器執(zhí)行的當前操作的操作執(zhí)行信息;以及
      [0042]操作查找子模塊,用于依據(jù)所述PHP解釋器的全局變量和所述當前操作的操作執(zhí)行信息,在所述PHP解釋器的調(diào)用棧信息中查找所述PHP解釋器執(zhí)行的當前操作對應的函數(shù)調(diào)用棧信息。
      [0043]可選地,所述監(jiān)控開關的開啟和關閉由所述命令行工具控制。
      [0044]根據(jù)本發(fā)明實施例的一種進程監(jiān)控方法和裝置,可以將PHP解釋器的操作執(zhí)行函數(shù)替換為預置的監(jiān)控函數(shù),并利用所述監(jiān)控函數(shù)執(zhí)行所述PHP解釋器針對進程編譯得到的操作,且利用所述監(jiān)控函數(shù)監(jiān)控所述操作的執(zhí)行過程中的函數(shù)信息,這里的函數(shù)信息可以為PHP函數(shù)在執(zhí)行過程中的所有函數(shù)信息,如函數(shù)名、函數(shù)參數(shù)、行號、文件名等信息,并且,還可以在函數(shù)執(zhí)行完成后獲取函數(shù)返回值、函數(shù)調(diào)用時間等信息,這樣,可以實時獲取操作的執(zhí)行過程中的函數(shù)信息并進行輸出,因此,能夠方便PHP腳本的開發(fā)人員快速定位PHP腳本的問題。
      [0045]上述說明僅是本發(fā)明技術方案的概述,為了能夠更清楚了解本發(fā)明的技術手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的【具體實施方式】。
      【附圖說明】
      [0046]通過閱讀下文可選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領域普通技術人員將變得清楚明了。附圖僅用于示出可選實施方式的目的,而并不認為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
      [0047]圖1示出了根據(jù)本發(fā)明一個實施例的一種進程監(jiān)控方法的步驟流程示意圖;
      [0048]圖2示出了根據(jù)本發(fā)明一個實施例的一種進程監(jiān)控方法的步驟流程示意圖;
      [0049]圖3示出了根據(jù)本發(fā)明一個實施例的一種進程監(jiān)控系統(tǒng)的結構示意圖;
      [0050]圖4示出了根據(jù)本發(fā)明一個實施例的一種進程監(jiān)控方法的步驟流程示意圖;以及
      [0051]圖5示出了根據(jù)本發(fā)明一個實施例的一種進程監(jiān)控裝置的結構示意圖。
      【具體實施方式】
      [0052]下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現(xiàn)本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠將本公開的范圍完整的傳達給本領域的技術人員。
      [0053]參照圖1,示出了根據(jù)本發(fā)明一個實施例的一種進程監(jiān)控方法的步驟流程示意圖,具體可以包括如下步驟:
      [0054]步驟101、將PHP解釋器的操作執(zhí)行函數(shù)替換為預置的監(jiān)控函數(shù);以及
      [0055]步驟102、利用所述監(jiān)控函數(shù)執(zhí)行所述PHP解釋器針對進程編譯得到的操作,且利用所述監(jiān)控函數(shù)監(jiān)控所述操作的執(zhí)行過程中的函數(shù)信息。
      [0056]PHP腳本在PHP解釋器中一般會經(jīng)過詞法解析、語法解析、編譯生成中間代碼和執(zhí)行中間代碼等步驟;其中,默認情況下執(zhí)行中間代碼的步驟是通過zend/zend_vm_execute, h文件中的zend_execute函數(shù)調(diào)用執(zhí)行完成,對于所有的中間代碼,默認實現(xiàn)是以按順序執(zhí)行,當遇到函數(shù)等情況時跳出去執(zhí)行,執(zhí)行完后再回到跳出的位置繼續(xù)執(zhí)行。
      [0057]本發(fā)明實施例的核心構思之一在于,將PHP解釋器的zend_execute、zend_execute等操作執(zhí)行函數(shù)替換為預置的監(jiān)控函數(shù),并利用所述監(jiān)控函數(shù)執(zhí)行所述PHP解釋器針對進程編譯得到的操作,且利用所述監(jiān)控函數(shù)監(jiān)控所述操作(op,operat1n)的執(zhí)行過程中的函數(shù)信息,這里的函數(shù)信息可以為PHP函數(shù)在執(zhí)行過程
      當前第1頁1 2 3 4 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1