[發明專利]調試程序的系統及方法有效
| 申請號: | 201310583179.3 | 申請日: | 2013-11-19 |
| 公開(公告)號: | CN103593292A | 公開(公告)日: | 2014-02-19 |
| 發明(設計)人: | 孫吉平;韓勇 | 申請(專利權)人: | 北京深思數盾科技有限公司 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 北京金信立方知識產權代理有限公司 11225 | 代理人: | 黃威;喻嶸 |
| 地址: | 100872 北京市海淀*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 調試 程序 系統 方法 | ||
技術領域
本發明涉及軟件開發調試領域,特別涉及一種調試程序的系統及方法。
背景技術
對于本地代碼開發來說,因得到CPU廠商底層支持和系統軟件開發商的積極參與,本地代碼調試器已經非常成熟,對本地代碼的調試并沒有什么困難和阻礙。但有一部分程序是針對于自定義虛擬機開發的程序或是已經加殼的程序,對于只能在虛擬機下執行的程序來說,調試程序就存在一定局限和困難,或者說根本無法調試。因此通過設計一套有針對性的調試系統及方法達到調試非本地代碼的目的是非常有必要的,讓非本地代碼調試器與本地代碼調試器共同作用同時調試,來達到最好的調試效果。
發明內容
本發明所要解決的技術問題是,提供一種調試程序的系統及方法,以解決調試非本地代碼困難的問題,提升調試效果。
為了解決上述技術問題,本發明提供了一種調試程序的系統,包括:虛擬機,其配置為運行所述被調試程序,并于所述被調試程序的當前運行指令符合調試中斷的條件時產生斷點中斷;調試器服務端,其嵌入所述虛擬機,并配置為在所述虛擬機產生斷點中斷時,掛起被調試程序并且將被調試程序的狀態信息發送給所述調試器客戶端;調試器客戶端,其與所述調試器服務端雙向通訊并且信息共享,并配置為獲取并顯示所述被調試程序的狀態信息并進行調試操作。
作為優選,所述虛擬機具體配置為根據所述調試器服務端的命令,在調試寄存器中設置斷點地址,并在運行被調試程序的每一條指令時檢查所述調試寄存器,當判定當前指令地址等于調試寄存器中的斷點地址時,所述虛擬機產生斷點中斷。
作為優選,所述虛擬機進一步配置為根據所述調試器服務端的命令設置調試模式,當所設置的調試模式為單步跟蹤時,所述虛擬機在判定當前指令地址等于調試寄存器中的斷點地址時產生單步中斷。
作為優選,所述調試器客戶端為被調試程序的子進程,其由所述被調試程序在進入所述虛擬機時創建。
作為優選,所述調試器客戶端配置為通過共享內存而實現與所述調試器服務端的信息共享,從而通過共享內存而獲取所述被調試程序的狀態信息以進行調試操作。
本發明還提供了一種調試程序的方法,用于對虛擬機上運行的程序進行調試,包括以下步驟:
S1:被調試程序在虛擬機中執行一條指令;
S2:所述虛擬機判斷當前指令是否符合調試中斷條件,如符合,執行步驟S3,否則,被調試程序繼續執行下一條指令;
S3:所述虛擬機產生斷點中斷,并由嵌入所述虛擬機的調試器服務端將所述被調試程序掛起;
S4:所述調試器服務端將被調試程序的狀態信息發送給與所述調試器服務器端雙向通訊并且信息共享的調試器客戶端;
S5:所述調試器客戶端獲取并顯示所述被調試程序的狀態信息;
S6:所述調試器客戶端根據用戶輸入指令,通過所述調試器服務端使掛起的被調試程序繼續執行指令。
作為優選,步驟S2具體包括:根據所述調試器服務端的命令,在調試寄存器中設置斷點地址,并在運行被調試程序的每一條指令時檢查所述調試寄存器,當判定當前指令地址等于調試寄存器中的斷點地址時,執行步驟S3。
作為優選,步驟S2進一步包括:根據所述調試器服務端的命令設置調試模式,當所設置的調試模式為單步跟蹤時,步驟S3中所述虛擬機產生單步中斷。
與現有技術相比,本發明的調試程序的系統及方法的有益效果在于:調試器客戶端通過與嵌入虛擬機中的調試器服務端通訊、獲取并顯示調試程序的狀態信息,并通過用戶交互,輸入指令,進行調試和執行程序,解決了在本地調試非本地程序難的問題。
附圖說明
圖1為本發明的實施例的調試程序的系統的整體結構圖;
圖2為本發明的實施例的調試程序的方法的流程圖。
具體實施方式
下面結合附圖和具體實施例對本發明的實施例的調試程序的系統及方法作進一步詳細描述,但不作為對本發明的限定。
圖1為本發明的實施例的調試程序的系統的整體結構圖。
如圖1所示,本發明的實施例的調試程序的系統包括虛擬機、調試器服務端和調試器客戶端,被調試程序運行于虛擬機上,其中,調試器服務端嵌入虛擬機。
虛擬機于被調試程序的當前運行指令符合調試中斷的條件時產生斷點中斷。調試器服務端在虛擬機產生斷點中斷時掛起被調試程序,并且將被調試程序的狀態信息發送給調試器客戶端。調試器客戶端與調試器服務端雙向通訊并且信息共享,用于獲取并顯示被調試程序的狀態信息并進行調試操作。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京深思數盾科技有限公司,未經北京深思數盾科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310583179.3/2.html,轉載請聲明來源鉆瓜專利網。





