虚拟机环境下的程序调试方法和系统技术方案

技术编号:8161472 阅读:197 留言:0更新日期:2013-01-07 19:30
本发明专利技术涉及程序调试(Debug)技术领域。更具体地,本发明专利技术涉及在不重启虚拟机(Virtual?Machine)的情况下对程序进行调试的技术。本发明专利技术提供了一种用于虚拟机环境下的程序调试方法,所述程序运行于所述虚拟机上,所述方法包括:接收对程序进行调试的请求;为所述程序的待调试代码行注入调试逻辑代码;以及运行经注入调试逻辑代码的程序代码,以对该程序进行调试。通过本发明专利技术,可以实现无需重启虚拟机或挂起虚拟机上运行的其它程序线程,而动态地对程序进行调试,并且无需对虚拟机本身代码作出修改。

【技术实现步骤摘要】

本专利技术涉及程序调试
更具体地,本专利技术涉及在不重启虚拟机的情况下对程序进行调试的技木。
技术介绍
虚拟机(Virtual Machine)指通过软件模拟的能够运行程序的物理机器。虚拟机通常分为两类系统虚拟机(System VM)以及进程虚拟机(Process VM)。系统虚拟机,又被称为“硬件虚拟机”(Hardware VM),是指提供了支持整个操作系统运行的完整系统平台的虚拟机。而进程虚拟机,又被称为“应用虚拟机”(Application VM),其作为ー个主操作系统(Host OS)内的普通应用运行,并且支持单ー进程(Process)。可以简单地将进程虚拟机理解为模拟了中央处理器CPU功能。一个进程虚拟机可能同时处理多个应用程序的多个 线程(Threads)。而为了对ー个进程虚拟机上运行的某个程序进行调试(Debug),就必须重新启动整个虚拟机将其切換至调试模式,在调试结束时,还要重新启动整个虚拟机将其切换至正常运行模式(或产品模式)。此外,在对ー个程序进行调试的过程中,必须将该虚拟机上正在运行的其它程序的相应线程挂起(Suspend),这使得对虚拟机上部署的某个或某些程序的调试会严重影响整个系统的运行。现有技术中存在两种解决上述问题的技术方案。其一,为了避免对虚拟机进行模式切換,仅仅使用日志文件(Log)来对程序运行过程中出现的问题进行诊断。这种技术方案的缺点是用于诊断程序问题的信息量太少,由于无法获得足够的信息而导致不能完全发现程序中存在的问题(Bug)。其ニ,将整个虚拟机同时运行在调试模式和正常模式两种模式下,在需要对虚拟机上的某个程序进行调试时就直接切換至调试模式,此时正常模式仍然在运行中,因此无需重启整个虚拟机,该虚拟机上的其它程序的运行也不受影响。但是该解决方案的缺点主要有两个一是同时运行虚拟机的两种模式会耗费大量的系统资源;ニ是实现该解决方案需要修改虚拟机的底层代码,既需要耗费虚拟机产品开发者大量的精力,也可能不符合虚拟机产品规范。
技术实现思路
考虑到上述存在的问题,本专利技术的目的之ー在于提供一种无需修改虚拟机代码而对虚拟机上的程序进行调试的方法或系统。本专利技术的目的之ニ在于提供一种无需重启虚拟机或停止虚拟机上运行的其它程序线程,而动态地对程序进行调试的方法或系统。根据本专利技术的ー个方面,提供了一种用于虚拟机环境下的程序调试方法,所述程序运行于所述虚拟机上,所述方法包括接收对程序进行调试的请求;为所述程序的待调试代码行注入调试逻辑代码;以及运行经注入调试逻辑代码的程序代码,以对该程序进行调试。根据本专利技术的另一方面,提供了一种用于虚拟机环境下的程序调试系统,所述程序运行于所述虚拟机上,所述系统包括调试请求接收装置,被配置为调试接收对程序进行调试的请求;注入装置,被配置为向所述程序的待调试代码行注入调试逻辑代码;以及调试装置,被配置为运行经注入调试逻辑代码的程序代码,以对该程序进行调试。根据本专利技术的方法和系统,通过注入调试逻辑代码并运行经注入后的代码,可以实现在无需重启虚拟机,以及无需停止虚拟机上运行的其它程序线程的情况下,动态地对程序进行调试,并且无需对虚拟机本身代码作出修改。需要强调的是,如无特别指出,本专利技术中提到的“虚拟机”均为“进程虚拟机,,(Process VM)。附图说明通过对结合附图所示出的实施方式进行详细说明,本专利技术的上述以及其他特征将更加明显,本专利技术附图中相同的标号表示相同或相似的部件。在 附图中,图I示出了适于用来实现本专利技术实施方式的示例性计算系统100的框图。图2A示出了根据本专利技术一个实施例的用于虚拟机环境下的程序调试方法的流程图;图2B示出了根据本专利技术一个实施例的基于JVM环境的调试代理的代码实例;图2C示出了根据本专利技术一个实施例的基于JVM环境的调试逻辑代码的具体代码实例;图3A示出了根据本专利技术另ー实施例的用于虚拟机环境下的程序调试方法的流程图;图3B示出了根据本专利技术一实施例的用于移除调试逻辑代码的具体代码实例;图4示出了根据本专利技术一个实施例的用于虚拟机环境下的程序调试系统的模块化框图;图5示出了根据本专利技术另ー实施例的用于虚拟机环境下的程序调试系统的模块化框图;图6示出了根据本专利技术一实施例的用于虚拟机环境下的程序调试系统的概要架构图。具体实施例方式在下文中,将參考附图通过实施方式对本专利技术提供的用于虚拟机环境下的程序调试的方法和系统进行详细地描述。所属
的技术人员知道,本专利技术的多个方面可以体现为系统、方法或计算机程序产品。因此,本专利技术的多个方面可以具体实现为以下形式,即,可以是完全的硬件、完全的软件(包括固件、驻留软件、微代码等)、或者本文一般称为“电路”、“模块”或“系统”的软件部分与硬件部分的组合。此外,本专利技术的多个方面还可以采取体现在ー个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可用的程序码。可以使用一个或多个计算机可读的介质的任何组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电的、磁的、光的、电磁的、红外线的、或半导体的系统、装置、器件或任何以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括以下有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPR0M或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任何合适的组合。在本文件的语境中,计算机可读存储介质可以是任何包含或存储程序的有形的介质,该程序被指令执行系统、装置或者器件使用或者与其结合使用。计算机可读的信号介质可包括在基带中或者作为载波一部分传播的、其中体现计算机可读的程序码的传播的数据信号。这种传播的信号可以采用多种形式,包括——但不限于——电磁信号、光信号或任何以上合适的组合。计算机可读的信号介质可以是并非为计算机可读存储介质、但是能发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序的任何计算机可读介质。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者任何合适的上述组合。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者任何合适的上述組合。 用于执行本专利技术的操作的计算机程序码,可以以ー种或多种程序设计语言的任何组合来编写,所述程序设计语言包括面向对象的程序设计语言-诸如Java、Smalltalk、C++之类,还包括常规的过程式程序设计语言-诸如” C”程序设计语言或类似的程序设计语言。程序码可以完全地在用户的计算上执行、部分地在用户的计算机上执行、作为ー个独立的软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何种类的网络——包括局域网(LAN)或广域网(WAN)-连接到用户的计算机,或者,可以(例如利用因特网服务提供商来通过因特网)连接到外部计算机。以下參照按照本专利技术实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发本文档来自技高网
...

【技术保护点】
一种用于虚拟机环境下的程序调试方法,所述程序运行于所述虚拟机上,所述方法包括:接收对程序进行调试的请求;为所述程序的待调试代码行注入调试逻辑代码;以及运行经注入调试逻辑代码的程序代码,以对该程序进行调试。

【技术特征摘要】

【专利技术属性】
技术研发人员:黄国亮蔡俊杰徐睿智吕晶南俊杰梁睿孟庆海
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1