一种基于Web的协同调试系统及方法与流程

文档序号:15981436发布日期:2018-11-17 00:22阅读:198来源:国知局

本发明涉及互联网技术领域,特别涉及一种基于web的协同调试系统及方法。

背景技术

随着web2.0技术的发展,基于web技术实现系统级应用已经成为现代技术的主流。以c/s(客户端/服务器)模式的应用技术已经逐步转变为以b/s(浏览器/服务器)模式为主的低成本、轻量级应用,并在各行各业中得到广泛应用。

j2ee技术是一种基于java的企业级web应用开发解决方案,不仅继承了java平台诸多优点,同时还提供了对ejb(enterprisejavabeans)、javaservletsapi、jsp(javaserverpages)以及xml技术的全面支持,大大简化了企业级应用开发。另外,作为一个集成开发平台技术,j2ee又具有可用性强、可靠性高、可扩展性好等优点。

调试是现代软件开发中必不可少的环节,而针对操作系统内核级调试往往需要专门的调试工具,例如目前比较流行的调试工具gdb,这样一方面开发人员需要配置特定的调试环境,增加了调试成本;另一方面,调试信息往往难以直接理解,增加了普通用户的调试难度。

gdb/mi是gdb提供的除了cli(commandlineinterface)命令之外的一种更重要的命令接口,它通常用于构建复杂系统的调试工具,作为复杂系统中的一个调试组件而存在。例如,在insight中实现的以gdb作为调试工具的guidebugger就充分利用了gdb/mi。但是,gdb/mi的输出信息格式较为复杂,需要熟悉其格式才能正确理解。

qemu是在gnu/linux平台上广泛使用的开源模拟器,具有轻量级、速度快、支持多种平台架构等优点。qemu支持用户级模式和系统级模式两种工作模式,其中,系统级工作模式可以使未经修改的内核或者操作系统在模拟环境下运行,为系统调试和跨平台应用操作提供了良好平台。

现有的用于操作系统内核级应用的调试工具通常不具有友好gui界面,而且调试过程复杂,需要较高的调试成本。



技术实现要素:

鉴于上述问题,本发明提供了一种基于web的协同调试系统及方法,该系统基于成熟的web开发技术和平台,可实现便捷、友好、高效的系统调试。

第一方面,本发明实施例提供一种基于web的协同调试系统,包括基于web的图形化调试平台和系统调试框架;

所述基于web的图形化调试平台包括:

web客户端浏览器模块,用于向http服务器模块发送调试请求,将gdb服务器调试模块返回的调试信息呈现给用户;

http服务器模块,用于接收所述调试请求,并将gdbwrapper消息转换模块的输出结果返回给用户客户端浏览器;

gdbwrapper消息转换模块,用于接收所述http服务器模块处理的所述调试请求,并将所述调试请求发送给gdb服务器调试模块;以及接收所述gdb服务器调试模块的发送的调试结果,将所述调试结果返回给所述http服务器模块;

gdb服务器调试模块,用于调试所述调试请求相对应的目标系统和应用程序,将调试结果返回给gdbwrapper消息转换模块。

所述协同调试框架包括:

协同调试用户管理模块,用于将所有调试用户分为多个调试组进行管理,并根据用户请求为用户创建一个新的调试组或将用户加入到现有的调试组;每个调试组具有唯一表示id,同一所述调试组的用户所接收到的调试信息相同;

协同调试权限管理模块,用于确定每个调试组的待调试用户是否拥有唯一token;所述每个调试组session维护一个唯一token,当拥有token的用户有权限发送调试命令;

协同调试消息管理模块,用于对所述调试请求和调试结果采用统一管理机制,将每一个调试请求和调试结果返回给相对应调试组的所有调试成员,通过采用数据库缓存机制保证调试信息的一致性。

在一个实施例中,所述调试请求包括以下一种或多种命令:

暂停pause、运行run、step单步、设置断点setbreakpoint、删除断点removebreakpoint、设置观察点setwatchpoint、删除观察点removewatchpoint、查看指定内存信息memory、查看寄存器信息register和退出quit。

在一个实施例中,所述调试信息包括以下一种或多种信息:

系统运行时线程堆栈信息、命令执行返回的gdb调试信息、断点列表信息、观察点列表信息、指定内存数据信息和寄存器数据信息。

在一个实施例中,所述gdbwrapper消息转换模块,具体用于将所述web客户端浏览器模块发送的json格式数据转换为gdb服务器可执行的调试命令,以及将所述gdb服务器调试模块返回的调试结果转换为所述web客户端浏览器模块显示的html格式数据。

在一个实施例中,所述json格式数据的调试命令,具体格式为:

[gid][command]:[调试事件]。

在一个实施例中,所述的调试结果的格式为:

[gid][command]:[调试事件][线程堆栈][断点列表][内存信息][寄存器信息]。

第二方面,本发明实施例提供一种基于web的协同调试方法,所述方法包括:基于web的图形化调试平台预处理操作、协同调试预处理操作、断点调试操作和协同调试操作;

所述基于web的图形化调试平台预处理操作,包括以下步骤:

(11)所述基于web的图形化调试平台根据预先配置的调试端口启动一个http服务器模块,并记录服务器地址url;

(12)所述web客户端浏览器模块输入服务器地址url,向http服务器模块发送http请求;

(13)所述gdbwrapper消息转换模块和gdb服务器调试模块进行初始化操作;

所述协同调试预处理操作,包括以下步骤:

(21)调试用户通过相应权限登录调试系统;

(22)所述协同调试用户管理模块根据用户请求为用户创建一个新的调试组或者加入到一个已有的调试组;

所述断点调试操作,包括以下步骤:

(31)所述基于web的图形化调试平台根据用户请求搜索相关函数或者全局变量,在web客户端浏览器模块中选择需要设置断点的相关函数或者全局变量;

(32)所述web客户端浏览器模块发出设置断点请求,将所述设置断点请求和相关函数或者全局变量发送给http服务器模块;

(33)所述http服务器模块将所述断点请求发送给gdbwrapper消息转换模块进行消息转换,并将所述设置断点请求和相关函数或者全局变量相对应的调试请求发送给gdb服务器调试模块,执行调试命令;

(34)所述gdb服务器调试模块将返回的断点列表信息、线程信息和控制台信息返回gdbwrapper消息转换模块进行消息转换,并将转换后的调试结果返回给http服务器模块;

协同调试操作,包括以下步骤:

(41)所述协同调试用户管理模块为第一个调试用户创建一个调试实例,所述调试实例维护一个调试组信息和一个调试token;

(42)新加入调试组的调试用户,向所述协同调试权限管理模块发出获取token请求;请求得到确认后,获得调试权限;

(43)所述协同调试消息管理模块在每次调试信息返回时,为所述调试组的所有调试成员返回相同的调试信息。

在一个实施例中,所述gdbwrapper消息转换模块和gdb服务器调试模块进行初始化操作,包括以下步骤:

(131)所述gdb服务器调试模块通过与qemu中运行的操作系统或者应用程序建立tcp连接,对所述操作系统或者应用程序进行调试;

(132)所述gdbwrapper消息转换模块,与所述gdb服务器调试模块建立tcp连接进行通信,且与http服务器模块通过websocket建立连接通信。

在一个实施例中,将所述设置断点请求和相关函数或者全局变量相对应的调试请求发送给gdb服务器调试模块,执行调试命令,包括以下步骤:

(331)所述http服务器模块解析web客户端浏览器模块发送的调试请求,执行相应的操作,主要包括以下步骤:

(a)当接收到的所述调试请求为quit退出命令,则发出一个中断gdb服务器的命令;

(b)当接收到的所述调试请求为set/removebreakpoint或者set/removewatchpoint,则向gdb服务器调试模块发出设置或者删除断点/观察点的命令;

(c)当接收的所述调试请求为memory查看内存信息或者register查看寄存器信息,则向gdb服务器调试模块发出查看内存信息或者寄存器信息相关格式的命令;

(d)当接收的所述调试请求为pause暂停或者run继续执行命令,则向gdb服务器调试模块发出中断执行或者继续执行命令;

(e)当接收的所述调试请求为step单步执行命令,则向gdb服务器调试模块发出单步调试命令,以函数为基本调试单位单步执行。

(332)所述http服务器模块将解析后的调试请求发送给所述gdbwrapper消息转换模块,所述gdbwrapper消息转换模块将调试请求转换为gdb服务器调试模块可执行的gdb/mi命令,并接收所述gdb服务器调试模块返回的调试结果,将所述调试结果转换为相应的数据格式返回给http服务器模块。

本发明实施例提供的上述技术方案的有益效果至少包括:

本发明实施例提供的一种基于web的协同调试系统,用户可以在浏览器界面上直接操作调试远端程序,不仅具有支持良好的图形化界面,而且能够实时获取调试信息,以更加清晰直观的方式完成调试工作;另一方面,协同调试功能使得调试用户可以不安装配置本地调试环境,只要向远端服务器发出调试请求,一旦获得调试权限,就可以像本地一样进行调试,这样大大降低了调试成本,提高了调试效率;同时该基于web的协同调试系统及方法,可以扩展到除了操作系统内核级调试之外的其他调试应用,满足不同调试需求,具有可扩展性强,适用范围广的特点,结合了web技术和调试技术的优点,为实现web跨平台、可视化调试提供了较好的解决方案。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:

图1为本发明实施例提供的基于web的协同调试系统的模块示意图;

图2为本发明实施例提供的基于web的协同调试系统架构整体示意图;

图3为本发明实施例提供的基于web的协同调试系统的调试界面示意图;

图4为本发明实施例提供的基于web的协同调试方法的流程图;

图5为本发明实施例提供的步骤s1的流程图;

图6为本发明实施例提供的步骤s13的流程图;

图7为本发明实施例提供的步骤s2的流程图;

图8为本发明实施例提供的步骤s3的流程图;

图9为本发明实施例提供的步骤s33的流程图;

图10为本发明实施例提供的步骤s4的流程图;

图11为本发明实施例提供的步骤s1的流程图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

参照图1所示,本发明实施例提供的基于web的协同调试系统,基于成熟的web开发技术和平台,可实现便捷、友好、高效的系统调试;该系统包括:基于web的图形化调试平台和系统调试框架;

其中:

web的图形化调试平台包括:

web客户端浏览器模块11,通过html、css、javascript技术以图形化界面形式,可以清晰地展现系统调试功能,并向http服务器模块发送调试请求,将gdb服务器调试模块返回的调试信息呈现给用户;

http服务器模块12,接收web客户端浏览器模块11即用户浏览器调试请求,并将gdbwrapper消息转换模块的输出结果返回给用户客户端浏览器;

gdbwrapper消息转换模块13,以websocket形式连接http服务器模块,同时实现了基于java的gdbmi调试接口连接gdb服务器调试模块,通过接收http服务器模块处理的用户浏览器调试请求,发送给gdb服务器调试模块,并将gdb服务器调试结果返回给http服务器模块;

gdb服务器调试模块14,通过tcp连接到qemu模拟器,调试目标系统和应用程序,并将调试结果信息返回给gdbwrapper消息转换模块,通过http服务器模块,最终返回给用户浏览器。

上述的协同调试框架包括:

协同调试用户管理模块21,对所有调试用户以分组形式进行按组进行管理,每个调试组具有一个唯一表示id,同一调试组用户所接收到的调试信息相同,用户可以加入已存在的某一调试组,也可以自己创建调试组;

协同调试权限管理模块22,每个调试组session都维护一个唯一token,只有拥有token的用户可以向服务器发送调试命令,希望调试的用户可以向服务器发送token请求,一旦获得token即可向服务器发送调试命令,进行调试;

协同调试消息管理模块23,调试请求和调试结果信息采用统一管理机制,每一个调试请求和调试结果信息将返回给该调试组的所有调试成员,通过采用数据库缓存机制保证调试信息的一致性。

在实际使用当中,基于web的协同调试系统中的各个模块和组件是紧密结合,协调工作的,其中图形化调试平台和协同调试框架模块相互协调使用,图形化调试平台主要完成调试工作的预处理、调试和控制调试过程等任务,系统调试模块则在调试过程中完成调试用户管理、调试权限协调和调试信息返回等任务,保证整个调试过程是一个有机的统一整体。

本实施例中,用户可以在浏览器界面上直接操作调试远端程序,不仅具有支持良好的图形化界面,而且能够实时获取调试信息,以更加清晰直观的方式完成调试工作;另一方面,协同调试功能使得调试用户可以不安装配置本地调试环境,只要向远端服务器发出调试请求,一旦获得调试权限,就可以像本地一样进行调试,这样大大降低了调试成本,提高了调试效率;同时该基于web的协同调试系统及方法,可以扩展到除了操作系统内核级调试之外的其他调试应用,满足不同调试需求,具有可扩展性强,适用范围广的特点,结合了web技术和调试技术的优点,为实现web跨平台、可视化调试提供了较好的解决方案。

参照图2所示,表示该基于web的协同调试系统的调试平台架构整体示意图,图中以调试linux内核为例进行说明,该基于web的图形化调试平台包括:

web客户端浏览器,以图形化界面向用户展现调试功能,并通过网络与http服务器交互,完成调试功能;

http服务器,通过websocket连接gdbwrapper发出调试命令请求,向客户端浏览器返回调试信息;

gdbwrapper消息转换模块,一方面通过websocket连接获取http服务器端的调试请求,另一方面将gdb服务器调试结果返回给http服务器;

gdb服务器,一方面通过tcp连接到qemu模拟器,调试linux内核,另一方面讲调试信息返回给gdbwrapper消息转换模块;

其中包括7个步骤:

①用户通过web浏览器发出调试命令;

②http服务器将接收到的调试命令转发给gdbwrapper所在的计算机;

③gdbwrapper对上述调试命令进行转换后发给gdb服务器;

④gdb服务器与qemu通信进行系统调试操作;

⑤gdbwrapper收集qemu输出的调试信息;

⑥gdbwrapper将调试返回信息发送给http服务器;

⑦http服务器将调试返回信息进行可视化处理后返回给客户端浏览器显示。

参照图3所示,表示该基于web的协同调试系统的web客户端浏览器模块11展示的调试界面示意图。

其中,qemu模拟器和linux内核,作为调试目标平台和应用,只是本发明选择的一个实例,qemu模拟器上也可以支持其他操作系统内符合和应用程序的调试;本发明实施例对此不做限定。

数据库服务器,将http服务器收集的调试信息保存起来,以便以后进行trace的分析和回放。

在一个实施例中,上述的调试请求可以包括以下一种或多种命令:

暂停pause、运行run、step单步、设置断点setbreakpoint、删除断点removebreakpoint、设置观察点setwatchpoint、删除观察点removewatchpoint、查看指定内存信息memory、查看寄存器信息register和退出quit。

上述的调试信息也可以包括以下一种或多种信息:

系统运行时线程堆栈信息、命令执行返回的gdb调试信息、断点列表信息、观察点列表信息、指定内存数据信息和寄存器数据信息。

在一个实施例中,上述gdbwrapper消息转换模块13,具体用于将web客户端浏览器模块11发送的json格式数据转换为gdb服务器可执行的调试命令,以及将所述gdb服务器调试模块14返回的调试结果转换为web客户端浏览器模块11显示的html格式数据。

其中:上述json格式数据的调试命令,具体格式比如为:

[gid][command]:[调试事件]。

上述的调试结果的格式比如为:

[gid][command]:[调试事件][线程堆栈][断点列表][内存信息][寄存器信息]。

基于同一发明构思,本发明实施例还提供了一种基于web的协同调试方法,由于该方法所解决问题的原理与前述基于web的协同调试系统相似,因此该方法的实施可以参见前述系统的实施,重复之处不再赘述。

本发明实施例还提供了一种基于web的协同调试方法,基于上述任一项实施例所提供的基于web的协同调试系统,该方法参照图4所示,包括:

s1、web的图形化调试平台预处理操作;

s2、协同调试预处理操作;

s3、断点调试操作;

s4、协同调试操作;

其中:步骤s1基于web的图形化调试平台预处理操作,参照图5包括:

s11、所述基于web的图形化调试平台根据预先配置的调试端口启动一个http服务器模块,并记录服务器地址url;该服务器地址url格式比如可以为:http://[服务器地址]:[端口]/[路径名]。

s12、所述web客户端浏览器模块输入服务器地址url,向http服务器模块发送http请求;

s13、所述gdbwrapper消息转换模块和gdb服务器调试模块进行初始化操作;

进一步地,参照图6所示,上述步骤s13包括:

s131、所述gdb服务器调试模块通过与qemu中运行的操作系统或者应用程序建立tcp连接,对所述操作系统或者应用程序进行调试;

s132、所述gdbwrapper消息转换模块,与所述gdb服务器调试模块建立tcp连接进行通信,且与http服务器模块通过websocket建立连接通信。

gdbwrapper消息转换模块与http服务器模块建立websocket连接格式为:[服务器地址]:[调试端口]。

gdbwrapper消息转换模块与gdb服务器调试模块建立tcp连接格式为:[127.0.0.1]:[端口]。

步骤s2所述协同调试预处理操作,参照图7所示,包括以下步骤:

s21、调试用户通过相应权限登录调试系统;

s22、所述协同调试用户管理模块根据用户请求为用户创建一个新的调试组或者加入到一个已有的调试组;

步骤s3所述断点调试操作,参照图8所示,包括以下步骤:

s31、所述基于web的图形化调试平台根据用户请求搜索相关函数或者全局变量,在web客户端浏览器模块中选择需要设置断点的相关函数或者全局变量;

s32、所述web客户端浏览器模块发出设置断点请求,将所述设置断点请求和相关函数或者全局变量发送给http服务器模块;

s33、所述http服务器模块将所述断点请求发送给gdbwrapper消息转换模块进行消息转换,并将所述设置断点请求和相关函数或者全局变量相对应的调试请求发送给gdb服务器调试模块,执行调试命令;

具体地,参照图9所示,步骤s33包括:

s331、所述http服务器模块解析web客户端浏览器模块发送的调试请求,执行相应的操作,主要包括以下步骤:

(a)当接收到的所述调试请求为quit退出命令,则发出一个中断gdb服务器的命令;

(b)当接收到的所述调试请求为set/removebreakpoint或者set/removewatchpoint,则向gdb服务器调试模块发出设置或者删除断点/观察点的命令;

(c)当接收的所述调试请求为memory查看内存信息或者register查看寄存器信息,则向gdb服务器调试模块发出查看内存信息或者寄存器信息相关格式的命令;

(d)当接收的所述调试请求为pause暂停或者run继续执行命令,则向gdb服务器调试模块发出中断执行或者继续执行命令;

(e)当接收的所述调试请求为step单步执行命令,则向gdb服务器调试模块发出单步调试命令,以函数为基本调试单位单步执行。

s332、所述http服务器模块将解析后的调试请求发送给所述gdbwrapper消息转换模块,所述gdbwrapper消息转换模块将调试请求转换为gdb服务器调试模块可执行的gdb/mi命令,并接收所述gdb服务器调试模块返回的调试结果,将所述调试结果转换为相应的数据格式返回给http服务器模块。

s34、所述gdb服务器调试模块将返回的断点列表信息、线程信息和控制台信息返回gdbwrapper消息转换模块进行消息转换,并将转换后的调试结果返回给http服务器模块;

步骤s4协同调试操作,参照图10所示,包括以下步骤:

s41、所述协同调试用户管理模块为第一个调试用户创建一个调试实例,所述调试实例维护一个调试组信息和一个调试token;

s42、新加入调试组的调试用户,向所述协同调试权限管理模块发出获取token请求;请求得到确认后,获得调试权限;

s43、所述协同调试消息管理模块在每次调试信息返回时,为所述调试组的所有调试成员返回相同的调试信息。

参阅图11所示,表示该基于web的协同调试方法的协同调试过程流程图,其协同调试过程包括以下步骤:

步骤111、开始;

步骤112、启动http服务器模块;基于web的图形化调试平台根据预先配置的调试端口启动一个http服务器模块,并记录服务器地址url

步骤113、打开web客户端浏览器,输入http服务器url地址;web客户端浏览器模块打开浏览器,输入服务器地址url,向http服务器模块发送http请求

步骤114、gdbwrapper消息转换模块和gdb服务器调试模块初始化;

步骤115、调试用户输入用户名和密码登录调试系统;

步骤116、判断登录成功;否则执行步骤115,是则执行步骤117;

步骤117、用户选择是否创建调试组;是则执行步骤118,否则执行步骤124;协同调试用户管理模块根据用户请求为用户创建一个新的调试组或者加入到一个已有的调试组;当选择加入一个已有的调试组后,可以直接从http服务器端直接获取同一组内的协同调试信息。

步骤118、获取调试权限,启动调试;

步骤119、设置调试断点;基于web的图形化调试平台根据用户请求搜索相关函数或者全局变量,在web客户端浏览器选中需要设置断点的函数或者全局变量;

步骤120、向http服务器发送调试命令;获得调试权限的web客户端浏览器发出设置断点请求,将设置断点请求和相关函数或者全局变量一起发送给http服务器;

步骤121、gdbwrapper进行消息转换,向gdb服务器发送调试命令;http服务器将断点和请求发送给gdbwrapper进行消息转换,并将调试请求命令发送给gdb服务器,执行调试命令;

步骤122、gdb服务器执行调试命令,并返回调试结果;gdb服务器将返回的断点列表信息、线程信息和控制台信息返回gdbwrapper进行消息转换,并将处理后调试信息返回给http服务器,最终以html形式返回给客户端浏览器。

步骤123、调试命令和返回的调试结果保存至数据库服务器;

步骤124、从http服务器端直接获取同一组内的协同调试信息;

步骤125、结束。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1