• 
    <ul id="o6k0g"></ul>
    <ul id="o6k0g"></ul>

    函數調用信息的獲取方法及裝置、測試設備制造方法及圖紙

    技術編號:15299794 閱讀:355 留言:0更新日期:2017-05-12 02:02
    本發明專利技術公開了一種函數調用信息的獲取方法及裝置、測試設備。其中,該方法包括:在運行待測試的程序的過程中,對程序中待調用的托管函數進行編譯,得到非托管函數,對非托管函數進行鉤子hook操作,得到第一函數調用信息,根據第一函數調用信息和托管函數的函數名生成第二函數調用信息,輸出得到的第二函數調用信息,其中,非托管函數被允許直接運行在CPU上,hook操作用于監控非托管函數在運行時的參數和返回值,第一函數調用信息至少包括:函數進入時間、函數退出時間,函數返回值,第二函數調用信息中包括具有對應關系的托管函數的函數名、函數進入時間、函數退出時間,函數返回值。本發明專利技術解決了相關技術偶現的crash的技術問題。

    Method and device for acquiring function call information and testing equipment

    The invention discloses a method and a device for obtaining function call information and a testing device. Among them, the method comprises the following steps: in the process of running test program, the managed function to be invoked in the program compile, get unmanaged functions for the hook hook operation on the unmanaged function, the first function call information, according to the function of the first function call information and the name of the managed function to generate second function calls. Second function call information, output the unmanaged function is allowed to run directly on the CPU, hook operating parameters for monitoring unmanaged functions at runtime and the return value, the first function call information includes at least a function entry time, exit time, function return value, function name, function managed function function second call information including relationship with the entry time, exit time, function return value. The invention solves the technical problem of the crash of the related technology.

    【技術實現步驟摘要】

    本專利技術涉及通信領域,具體而言,涉及一種函數調用信息的獲取方法及裝置、測試設備。
    技術介紹
    相關技術中提供了一種可以記錄托管代碼函數的調用情況的技術方案,利用Mono提供的Profiler(可以理解為是一種分析工具)功能,該功能可以利用Mono提供的mono_profiler_install_enter_leave接口注冊兩個函數,這兩個注冊過的回調函數分別會在托管代碼里的函數進入和退出的時候被調用,Mono會給這兩個回調函數提供一個自定義的數據結構,用來存儲可能需要的數據,還會提供一個參數,通過該參數可以獲取本次托管代碼調用了哪個函數。接口注冊好了以后再用Mono提供的mono_profiler_set_events接口設置MONO_PROFILER_ENTER_LEAVE事件,至此,托管代碼中運行的所有函數只要一被執行就會調用注冊過的兩個回調函數。在實際項目中,專利技術人發現使用上述技術方案去記錄托管代碼函數的調用情況,會發生偶現的crash崩潰現象,直接導致了現有的技術方案不能應用在一些復雜項目中。針對上述的問題,目前尚未提出有效的解決方案。
    技術實現思路
    本專利技術實施例提供了一種函數調用信息的獲取方法及裝置、測試設備,以至少解決相關技術中采用mono提供的分析工具獲取托管函數的調用情況的技術方案,偶現crash現象的技術問題。根據本專利技術實施例的一個方面,提供了一種函數調用信息的獲取方法,包括:在運行待測試的程序的過程中,對所述程序中待調用的托管函數進行編譯,得到非托管函數,其中,所述非托管函數被允許直接運行在中央處理器CPU上;對所述非托管函數進行鉤子hook操作,得到第一函數調用信息,其中,所述hook操作用于監控所述非托管函數在運行時的參數和返回值,所述第一函數調用信息至少包括:函數進入時間、函數退出時間,函數返回值;根據所述第一函數調用信息和所述托管函數的函數名生成第二函數調用信息,其中,所述第二函數調用信息中包括具有對應關系的所述托管函數的函數名、函數進入時間、函數退出時間,函數返回值;輸出所述第二函數調用信息。根據本專利技術的另一個方面,還提供了一種函數調用信息的獲取裝置,包括:編譯單元,用于在運行待測試的程序的過程中,對所述程序中待調用的托管函數進行編譯;第一確定單元,用于對所述托管函數編譯后得到非托管函數,其中,所述非托管函數被允許直接運行在中央處理器CPU上;第二確定單元,用于對所述非托管函數進行鉤子hook操作,得到第一函數調用信息,其中,所述hook操作用于監控所述非托管函數在運行時的參數和返回值,所述第一函數調用信息至少包括:函數進入時間、函數退出時間,函數返回值;生成單元,用于根據所述第一函數調用信息和所述托管函數的函數名生成第二函數調用信息,其中,所述第二函數調用信息中包括具有對應關系的所述托管函數的函數名、函數進入時間、函數退出時間,函數返回值;輸出單元,用于輸出所述第二函數調用信息。根據本專利技術實施例的另一方面,還提供了一種測試設備,包括:處理器;用于存儲處理器可執行指令的存儲器;其中,所述處理器,用于在運行待測試的程序的過程中,對所述程序中待調用的托管函數進行編譯,得到非托管函數,對所述非托管函數進行鉤子hook操作,得到第一函數調用信息,根據所述第一函數調用信息和所述托管函數的函數名生成第二函數調用信息,進而輸出所述第二函數調用信息,其中,所述非托管函數被允許直接運行在中央處理器CPU上,所述hook操作用于監控所述非托管函數在運行時的參數和返回值,所述第一函數調用信息至少包括:函數進入時間、函數退出時間,函數返回值,所述第二函數調用信息中包括具有對應關系的所述托管函數的函數名、函數進入時間、函數退出時間,函數返回值。在本專利技術實施例中,通過在運行待測試的程序的過程中,對程序中待調用的托管函數進行編譯,得到非托管函數,對非托管函數進行鉤子hook操作,得到第一函數調用信息,根據第一函數調用信息和托管函數的函數名生成第二函數調用信息,進而輸出得到的第二函數調用信息,通過hook操作技術來得到第一函數調用信息,再得到根據第一函數調用信息和托管函數的函數名生成的第二函數調用信息,從而不會出現crash崩潰現象,進而解決了相關技術中采用mono提供的分析工具獲取托管函數的調用情況的技術方案,偶現crash現象的技術問題。附圖說明此處所說明的附圖用來提供對本專利技術的進一步理解,構成本申請的一部分,本專利技術的示意性實施例及其說明用于解釋本專利技術,并不構成對本專利技術的不當限定。在附圖中:圖1是根據本專利技術實施例的一種可選的函數調用信息的獲取方法的應用環境示意圖;圖2是根據本專利技術實施例的一種可選的函數調用信息的獲取方法的流程圖;圖3為根據本專利技術示例的編譯函數的一種流程示意圖;圖4為根據本專利技術示例的編譯函數的另一種流程示意圖;圖5為根據本專利技術示例的編譯函數的又一種流程示意圖;圖6為根據本專利技術示例的根據函數指針fp監聽參數和返回值的流程圖;圖7為根據本專利技術示例的監控函數調用信息的流程圖;圖8為根據本專利技術實施例的一種可選的函數調用信息的獲取裝置的結構框圖;圖9為根據本專利技術實施例的一種可選的函數調用信息的獲取裝置的另一結構框圖;圖10為根據本專利技術實施例的一種可選的第一確定單元的結構框圖;圖11為根據本專利技術實施例的一種可選的測試設備的結構框圖;圖12為根據本專利技術實施例的一種可選的產品設備的主界面的示意圖;圖13為根據本專利技術實施例的一種可選的產品設備的界面示意圖;圖14為根據本專利技術實施例的另一種可選的產品設備的界面示意圖。具體實施方式為了使本
    的人員更好地理解本專利技術方案,下面將結合本專利技術實施例中的附圖,對本專利技術實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本專利技術一部分的實施例,而不是全部的實施例?;诒緦@夹g中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都應當屬于本專利技術保護的范圍。需要說明的是,本專利技術的說明書和權利要求書及上述附圖中的術語“第一”、“第二”等是用于區別類似的對象,而不必用于描述特定的順序或先后次序。應該理解這樣使用的數據在適當情況下可以互換,以便這里描述的本專利技術的實施例能夠以除了在這里圖示或描述的那些以外的順序實施。此外,術語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統、產品或設備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或對于這些過程、方法、產品或設備固有的其它步驟或單元。為了更好的理解本專利技術實施例以下提供的技術方案,本專利技術實施例對實施例中出現的技術術語進行解釋說明。手游:手機游戲的簡稱,相對于PC游戲而言,在手機上運行的游戲。Native代碼:也叫非托管代碼,指可以直接運行在某一架構的CPU上的指令序列,也可以指代那些可有直接編譯成這類指令序列的高級語言,比如C/C++語言,但是像依賴虛擬機運行的java和依賴.Net庫運行的就不能理解為是非托管代碼。.Net框架:由微軟開發的一種采用虛擬機運行的變成平臺,以通用語言運行庫為基礎,支持多種語言(C#,F#,VB.NET,C++,Python等)的開發。托管代碼:相對于Native代碼的概念本文檔來自技高網
    ...
    函數調用信息的獲取方法及裝置、測試設備

    【技術保護點】
    一種函數調用信息的獲取方法,其特征在于,包括:在運行待測試的程序的過程中,對所述程序中待調用的托管函數進行編譯,得到非托管函數,其中,所述非托管函數被允許直接運行在中央處理器CPU上;對所述非托管函數進行鉤子hook操作,得到第一函數調用信息,其中,所述hook操作用于監控所述非托管函數在運行時的參數和返回值,所述第一函數調用信息至少包括:函數進入時間、函數退出時間,函數返回值;根據所述第一函數調用信息和所述托管函數的函數名生成第二函數調用信息,其中,所述第二函數調用信息中包括具有對應關系的所述托管函數的函數名、函數進入時間、函數退出時間,函數返回值;輸出所述第二函數調用信息。

    【技術特征摘要】
    1.一種函數調用信息的獲取方法,其特征在于,包括:在運行待測試的程序的過程中,對所述程序中待調用的托管函數進行編譯,得到非托管函數,其中,所述非托管函數被允許直接運行在中央處理器CPU上;對所述非托管函數進行鉤子hook操作,得到第一函數調用信息,其中,所述hook操作用于監控所述非托管函數在運行時的參數和返回值,所述第一函數調用信息至少包括:函數進入時間、函數退出時間,函數返回值;根據所述第一函數調用信息和所述托管函數的函數名生成第二函數調用信息,其中,所述第二函數調用信息中包括具有對應關系的所述托管函數的函數名、函數進入時間、函數退出時間,函數返回值;輸出所述第二函數調用信息。2.根據權利要求1所述的方法,其特征在于,在對所述非托管函數進行鉤子hook操作之后,且在根據所述第一函數調用信息和所述托管函數的函數名生成第二函數調用信息之前,還包括:根據預先建立的對應關系獲取與所述非托管函數的第一函數指針對應的所述托管函數的第二函數指針;通過所述第二函數指針查找到所述托管函數的所述函數名。3.根據權利要求2所述的方法,其特征在于,在對所述非托管函數進行鉤子hook操作之后,且在根據預先建立的對應關系獲取與所述非托管函數的第一函數指針對應的所述托管函數的第二函數指針之前,還包括:通過執行所述hook操作得到的返回地址獲取所述非托管函數的匯編代碼;根據所述匯編代碼獲取所述非托管函數的第一函數指針。4.根據權利要求2所述的方法,其特征在于,在對所述程序中待調用的托管函數進行編譯之后,且在根據預先建立的對應關系獲取與所述非托管函數的第一函數指針對應的所述托管函數的第二函數指針之前,還包括:建立所述非托管函數的第一函數指針與所述托管函數的第二函數指針之間的所述對應關系,其中,進行所述編譯所需的參數包括所述托管函數的第二函數指針,進行所述編譯之后所得到的返回值包括所述非托管函數的第一函數指針。5.根據權利要求1至4中任一項所述的方法,其特征在于,對所述非托管函數進行鉤子hook操作,得到第一函數調用信息包括:使用預先定義的hook函數對非托管函數進行所述hook操作,其中,所述預先定義的hook函數輸入參數包括:需要被hook操作的參數,所述預先定義的hook函數輸出參數包括:所述托管函數運行時的參數和返回值,所述預先定義的hook函數,用于監控所述非托管函數在運行時的參數和返回值。6.根據權利要求1至4中任一項所述的方法,其特征在于,對所述程序中待調用的托管函數進行編譯,得到非托管函數包括:對所述程序中所有待調用的托管函數進行編譯,得到對應的非托管函數。7.一種函數調用信息的獲取裝置,其特征在于,包括:編譯單元,用于在運行待測試的程序的過程中,對所述程序中待調用的托管函數進行編譯;第一確定單元,用于對所述托管函數編譯后得到非托管函數,其中...

    【專利技術屬性】
    技術研發人員:黃柳優李源純,姜潤知,王鵬魏學峰,
    申請(專利權)人:騰訊科技深圳有限公司,
    類型:發明
    國別省市:廣東;44

    網友詢問留言 已有0條評論
    • 還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。

    1
    主站蜘蛛池模板: 无码精品不卡一区二区三区 | 无码性午夜视频在线观看| 人妻无码一区二区视频| 中文字幕人妻无码系列第三区 | 国产成人无码精品久久久免费| 亚洲国产精品无码久久久不卡| 中文字幕av无码无卡免费| 国产成人精品无码一区二区老年人 | 国产精品无码av在线播放| 亚洲中文字幕久久无码| 无码人妻熟妇AV又粗又大| 无码精品人妻一区二区三区影院| 99无码精品二区在线视频| 亚洲午夜国产精品无码| 亚洲一级Av无码毛片久久精品| 精品无码久久久久国产动漫3d| 亚洲爆乳无码一区二区三区| 久久中文字幕无码专区| 影音先锋无码a∨男人资源站| 精品无码国产自产拍在线观看| 中文有无人妻vs无码人妻激烈 | 亚洲V无码一区二区三区四区观看| 日韩AV无码精品一二三区| 亚洲av中文无码乱人伦在线观看| 亚洲AV无码成人专区片在线观看| 中文字幕无码av激情不卡久久| 一本一道中文字幕无码东京热| MM1313亚洲精品无码久久| 亚洲av永久无码一区二区三区| 精品国产一区二区三区无码| 人妻夜夜添夜夜无码AV| 精品日韩亚洲AV无码| 精品久久亚洲中文无码| 亚洲色无码专区一区| 亚洲精品久久久久无码AV片软件| 亚洲人成人无码.www石榴| 无码人妻丰满熟妇区毛片| 精品久久久无码中字| 国产成人无码精品久久久免费| 日韩精品无码一区二区三区四区| 人妻丰满熟妇aⅴ无码|