CN102609353A - 对程序调试进行管理的方法、装置及*** - Google Patents
对程序调试进行管理的方法、装置及*** Download PDFInfo
- Publication number
- CN102609353A CN102609353A CN2012100152005A CN201210015200A CN102609353A CN 102609353 A CN102609353 A CN 102609353A CN 2012100152005 A CN2012100152005 A CN 2012100152005A CN 201210015200 A CN201210015200 A CN 201210015200A CN 102609353 A CN102609353 A CN 102609353A
- Authority
- CN
- China
- Prior art keywords
- program
- packet
- debugging
- debug
- target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种对程序调试进行管理的方法和***;所述方法中,用于调试目标程序的调试端与加载该目标程序的目标端跨平台,其中所述调试端执行如下步骤:在得到用于调试目标程序的代码后,将用于调试目标程序的代码封装成第一数据包;获取加载该目标程序的目标端的网络地址信息;将该第一数据包的目标地址作为该目标程序所在主机的网络地址,发送所述第一数据包。
Description
技术领域
本发明涉及计算机应用领域,尤其涉及一种发送、对程序调试进行管理的方法、装置及***。
背景技术
根据调试器和被调试程序的运行环境,软件调试可分为两种方式:一种是本地调试(Native Debug),这种情况下调试器与被调试的程序往往是运行在同一台机器,即相同的操作***上的两个进程,调试器进程通过操作***专门提供的调用接口控制、访问被调试进程;另一种是交叉调试(CorssDebug),这种情况下调试器运行在开发主机上,而被调试程序则运行在目标机上。
交叉调试常常又称为远程调试(Remote Debug),一般应用在嵌入式***的软件开发中,其中用于交叉调试的调试器叫做交叉调试器。
进行交叉调试时,开发主机上的交叉调试器以某种方式控制目标机上被调试程序的运行方式,并具有查看和修改目标机上内存单元、寄存器以及被调试进程中变量值等各种调试功能。而提供这种控制功能的就是目标机中称为调试代理的模块,它负责与交叉调试器共同配合以完成对目标机上运行着的进程的调试。一般地,将交叉调试器和调试代理一起称为嵌入式***调试器。
在嵌入式linux***开发中一般用GNU gdb调试应用程序,其原有的运程调试只能用于局域网络,而且不能实现跨平台调试嵌入式***目标程序。将gdb扩展用于Web环境的调试器现在还没有,本专利提供的Web调试器实现方法目前还没有人实现过,提供了一种分布式调试嵌入式linux应用程序的方法。
发明内容
本发明提供的对程序调试进行管理的方法方法、装置及***,要解决的技术问题是如何实现跨平台的程序调试。
为解决上述技术问题,本发明提供了如下技术方案:
一种对程序调试进行管理的方法,用于调试目标程序的调试端与加载该目标程序的目标端跨平台,其中所述调试端执行如下步骤:
在得到用于调试目标程序的代码后,将用于调试目标程序的代码封装成第一数据包;
获取加载该目标程序的目标端的网络地址信息;
将该第一数据包的目标地址作为该目标程序所在主机的网络地址,发送所述第一数据包。
一种对程序调试进行管理的方法,用于调试目标程序的调试端与加载该目标程序的目标端跨平台,其中所述目标端执行如下步骤:
在接收到该第一数据包后,对该第一数据包进行解析,得到调试程序;
执行所述调试程序,得到执行结果;
将所述执行结果封装成第二数据包;
将所述第一数据包的源地址作为该第二数据包的目标地址,将所述第二数据包发送出去。
优选的,所述方法还具有如下特点:所述对该第一数据包进行解析,得到调试程序,包括:
判断解析的代码中是否有“-g”参数,如果有,则将包括该参数的代码作为调试代码。
一种对程序调试进行管理的方法,用于调试目标程序的调试端与加载该目标程序的目标端跨平台,其中:
所述调试端采用上述方法发送调试程序给目标端;
所述目标端采用上述方法处理该调试程序。
一种对程序调试进行管理的装置,用于调试目标程序,其中加载该目标程序的目标子***与该装置跨平台,其中所述装置包括:
第一封装装置,用于在得到用于调试目标程序的代码后,将用于调试目标程序的代码封装成第一数据包;
获取装置,与所述第一封装装置相连,用于获取目标子***的网络地址信息;
第一发送装置,与所述获取装置相连,用于将该第一数据包的目标地址作为该目标程序所在主机的网络地址,发送所述第一数据包。
一种对程序调试进行管理的装置,该装置加载有一目标程序,且与用于调试目标程序的调试子***跨平台,其中所述该装置包括:
解析模块,用于在接收到该第一数据包后,对该第一数据包进行解析,得到调试程序;
执行模块,与所述解析模块相连,用于执行所述调试程序,得到执行结果;
封装模块,与所述执行模块相连,将所述执行结果封装成第二数据包;
发送模块,与所述封装模块相连,将所述第一数据包的源地址作为该第二数据包的目标地址,发送所述第二数据包。
优选的,所述装置还具有如下特点:
所述解析模块,用于判断解析的代码中是否有“-g”参数,如果有,则将包括该参数的代码作为调试代码。
一种对程序调试进行管理的***,用于调试目标程序的调试子***与加载该目标程序的目标子***跨平台,其中:
所述调试子***采用上述装置发送调试程序给目标端;
所述目标子***采用上述装置处理该调试程序。
与现有技术相比,通过将调试端和目标段之间的通信信息封装数据包,并通过网络传输,克服现有技术中调试端和目标端跨平台时,无法进行调试操作的问题。
附图说明
图1为本发明实施例提供的对程序调试进行管理的方法的流程示意图;
图2为本发明实施例提供的对程序调试进行管理的方法的流程示意图;
图3为本发明应用实例提供的调试目标程序的方法的交互示意图;
图4为本发明实施例提供的对程序调试进行管理的装置的结构示意图;
图5为本发明实施例提供的对程序调试进行管理的装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步的详细描述。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
本发明涉及在Web环境的调试器实现,采用封装gdb与gdbserver通信的RSP协议信息为http数据,建立浏览器端与Web服务器端的gdb与嵌入式***中的gdbserver的通信的实现Web的远程调试。
本发明提供一种分布式调试嵌入式目标程序的方法,在Web服务器端实现调试会话服务,在浏览器端提供调试器控件程序,处理RSP协议信息的代理转发。提供通过浏览器登录Web服务器调试会话服务远程调试嵌入式目标程序,可实现跨平台调试嵌入式linux***中的目标程序,方便在嵌入式***开发中的调试环境搭建。
图1为本发明实施例提供的对程序调试进行管理的方法的流程示意图。图1所示方法实施例是以解决现有技术中跨平台数据无法将调试程序发送出去的问题为目的,其中用于调试目标程序的调试端与加载该目标程序的目标端跨平台,其中所述调试端执行如下步骤:
步骤A10、在得到用于调试目标程序的代码后,将用于调试目标程序的代码封装成第一数据包;
步骤A20、获取加载该目标程序的目标端的网络地址信息;
步骤A30、将该第一数据包的目标地址作为该目标程序所在主机的网络地址,发送所述第一数据包。
图2为本发明实施例提供的对程序调试进行管理的方法的流程示意图。与图1所示方法相对应,其中要解决的技术问题是在跨平台的情况下如何实现对目标程序进行调试,图2所示方法实施例中,用于调试目标程序的调试端与加载该目标程序的目标端跨平台,其中所述目标端执行如下步骤:
步骤B10、在接收到该第一数据包后,对该第一数据包进行解析,得到调试程序;
步骤B20、执行所述调试程序,得到执行结果;
步骤B30、将所述执行结果封装成第二数据包;
步骤B40、将所述第一数据包的源地址作为该第二数据包的目标地址,发送所述第二数据包。
其中,所述对该第一数据包进行解析,得到调试程序,包括:
判断解析的代码中是否有“-g”参数,如果有,则将包括该参数的代码作为调试代码。
由上可以看出,上述实施例的发送和接收方法,将gdb与gdbserver通信的RSP协议信息封装成http数据进行传输,从而建立浏览器端与Web服务器端的gdb与嵌入式***中的gdbserver的通信的实现Web的远程调试。
另外,本发明还提供一种对程序调试进行管理的方法实施例的交互示意图。其中,用于调试目标程序的调试端与加载该目标程序的目标端跨平台,其中:
调试端采用图1所示的方法向目标端发送调试代码;
目标端采用图2所示的方法处理该调试代码。
本实施例提供的方法,实现通过浏览器登录Web服务器的远程调试服务程序,可在浏览器上远程调试嵌入式目标程序。
下面以一应用实例进行说明:
在本应用实例中,调试端为Web服务器端的gdb,目标端为与嵌入式***目标机中的gdbserver,建立两者的网络通信协议,如RSP协议。两者将互相通信所使用的RSP协议信息封装成http报文,在Web环境中建立通信,具体来说,包括了Web服务端对RSP信息的转发、对gdb/MI接口的封装和浏览器端对RSP信息的转发。
概括来说,用户登录Web服务器端的调试会话服务,交叉编译将要远程调试的程序,编译时带有-g参数,程序可用于调试。将目标程序从Web服务器端下载到嵌入式目标机中,下载到嵌入式目标机中的程序可以是经stip处理过的程序。其具体实施步骤如下:
步骤101、用户在嵌入式***中开启gdbserver,具体方法是:gdbserver192.168.4.84:1234program,其中192.168.4.84为浏览器端主机的IP地址,gdbserver发起调试服务,等待gdb与其进行RSP数据的通信。
步骤102、用户在浏览器调试界面发起调试请求,输入相应的调试参数,通过在浏览器端的调试器控件与嵌入式***目标机建立连接,同时Web服务器端开启调试会话服务,调试器控件轮询请求Web服务器端的RSP数据,建立Web服务器端的gdb与嵌入式***目标机中的gdbserver的RPS数据通信。
步骤103、Web服务器的调试会话,封装gdb/MI命令行接口,提供浏览器端的调试界面显示输出,提供RSP协议数据的代理转发功能模块,在IP地址为127.0.0.1建立socket服务程序,用于获取和转发RSP协议数据。
步骤104、利用gdb远程调试的原有方法,在gdb/MI命令行接口输入target remote 127.0.0.1:1234,建立与socket服务程序的通信,其中1234为端口号,端口号用于区分不同的调试会话,不同的调试会话有的gdb与socket服务程序对。端口号的分配由RSP调试会话服务程度处理,和处理来自浏览器的RSP数据请求。
步骤105、gdb在进行远程调试时,gdbserver运行在目标机中,gdb运行在开发主机上,gdb与gdbserver通过串口或局域网络进行通信,因gdb与gdbserver的通信是不能通过internet建立连接,所以将gdb扩展应用于Web环境,需要将gdb与gdbserver通信的RSP信息封装成http格式的信息转发给Browser host和Web host,再由相应的模块解析出RSP信息转发给gdb和gdbserver。
如图3所示,当用户要调试程序时,首先将从Web调试器服务器端编译好的目标程序,其可以是经strip处理去掉调试信息的程序,而Web host端由gdb调试的程序是带有调试信息的。将要被调试的程序下载到Etargethost中,由gdbserver开启所要调试的程序,gdbserver IP:Port/ttyS0 program,再在浏览器上设置连接参数,开始调试。此时RSP Transceiver模块将与Etarget host建立连接,在连接建立好后,去请求Web host调试会话服务程序,请求获取RSP数据,将得到的RSP信息转发给gdbserver,再就是去读取gdbserver回应的RSP信息,封装成http数据post给Web host端的调试会话服务程序,这们就建立了gdb与gdbserver在Web环境的通信连接。
图4为本发明实施例提供的对程序调试进行管理的装置的结构示意图。结合图1和图3所示的方法,其中加载该目标程序的目标子***与该装置跨平台,其中所述装置包括:
第一封装装置401,用于在得到用于调试目标程序的代码后,将用于调试目标程序的代码封装成第一数据包;
获取装置402,与所述第一封装装置401相连,用于获取加载该目标程序的目标端的网络地址信息;
第一发送装置403,与所述获取装置402相连,用于将该第一数据包的目标地址作为该目标程序所在主机的网络地址,发送所述第一数据包。
图5为本发明实施例提供的对程序调试进行管理的装置的结构示意图。结合图2和3所示的方法,图4所示装置加载有一目标程序,且与用于调试目标程序的调试子***跨平台,其中所述该装置包括:
解析装置501,用于在接收到该第一数据包后,对该第一数据包进行解析,得到调试程序;
执行装置502,与所述解析装置501相连,用于执行所述调试程序,得到执行结果;
第二封装装置503,与所述执行装置502相连,用于将所述执行结果封装成第二数据包;
第二发送装置504,与所述第二封装装置503相连,用于将所述第一数据包的源地址作为该第二数据包的目标地址,将所述第二数据包发送出去。
具体的,所述解析装置501,用于判断解析的代码中是否有“-g”参数,如果有,则将包括该参数的代码作为调试代码。
由上可以看出,上述实施例的发送和接收方法,将gdb与gdbserver通信的RSP协议信息封装成http数据进行传输,从而建立浏览器端与Web服务器端的gdb与嵌入式***中的gdbserver的通信的实现Web的远程调试。
另外,本发明还提供一种对程序调试进行管理的***,在该***中,用于调试目标程序的调试子***与加载该目标程序的目标子***跨平台,其中:
所述调试子***采用图3所示的装置发送调试程序给目标端;
所述目标子***采用图4所示的装置处理该调试程序。
本实施例提供的方法,实现通过浏览器登录Web服务器的远程调试服务程序,可在浏览器上远程调试嵌入式目标程序。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求所述的保护范围为准。
Claims (8)
1.一种对程序调试进行管理的方法,其特征在于,用于调试目标程序的调试端与加载该目标程序的目标端跨平台,其中所述调试端执行如下步骤:
在得到用于调试目标程序的代码后,将用于调试目标程序的代码封装成第一数据包;
获取加载该目标程序的目标端的网络地址信息;
将该第一数据包的目标地址作为该目标程序所在主机的网络地址,发送所述第一数据包。
2.一种对程序调试进行管理的方法,其特征在于,用于调试目标程序的调试端与加载该目标程序的目标端跨平台,其中所述目标端执行如下步骤:
在接收到该第一数据包后,对该第一数据包进行解析,得到调试程序;
执行所述调试程序,得到执行结果;
将所述执行结果封装成第二数据包;
将所述第一数据包的源地址作为该第二数据包的目标地址,将所述第二数据包发送出去。
3.根据权利要求2所述的方法,其特征在于,所述对该第一数据包进行解析,得到调试程序,包括:
判断解析的代码中是否有“-g”参数,如果有,则将包括该参数的代码作为调试代码。
4.一种对程序调试进行管理的方法,其特征在于,用于调试目标程序的调试端与加载该目标程序的目标端跨平台,其中:
所述调试端采用如权利要求1所述的方法发送调试程序给目标端;
所述目标端采用如权利要求2或3所述的方法处理该调试程序。
5.一种对程序调试进行管理的装置,其特征在于,用于调试目标程序,其中加载该目标程序的目标子***与该装置跨平台,其中所述装置包括:
第一封装装置,用于在得到用于调试目标程序的代码后,将用于调试目标程序的代码封装成第一数据包;
获取装置,与所述第一封装装置相连,用于获取目标子***的网络地址信息;
第一发送装置,与所述获取装置相连,用于将该第一数据包的目标地址作为该目标程序所在主机的网络地址,发送所述第一数据包。
6.一种对程序调试进行管理的装置,其特征在于,该装置加载有一目标程序,且与用于调试目标程序的调试子***跨平台,其中所述该装置包括:
解析模块,用于在接收到该第一数据包后,对该第一数据包进行解析,得到调试程序;
执行模块,与所述解析模块相连,用于执行所述调试程序,得到执行结果;
封装模块,与所述执行模块相连,将所述执行结果封装成第二数据包;
发送模块,与所述封装模块相连,将所述第一数据包的源地址作为该第二数据包的目标地址,发送所述第二数据包。
7.根据权利要求6所述的装置,其特征在于:
所述解析模块,用于判断解析的代码中是否有“-g”参数,如果有,则将包括该参数的代码作为调试代码。
8.一种对程序调试进行管理的***,其特征在于,用于调试目标程序的调试子***与加载该目标程序的目标子***跨平台,其中:
所述调试子***采用如权利要求5所述的装置发送调试程序给目标端;
所述目标子***采用如权利要求6或7所述的装置处理该调试程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012100152005A CN102609353A (zh) | 2012-01-17 | 2012-01-17 | 对程序调试进行管理的方法、装置及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012100152005A CN102609353A (zh) | 2012-01-17 | 2012-01-17 | 对程序调试进行管理的方法、装置及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102609353A true CN102609353A (zh) | 2012-07-25 |
Family
ID=46526743
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012100152005A Pending CN102609353A (zh) | 2012-01-17 | 2012-01-17 | 对程序调试进行管理的方法、装置及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102609353A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103684899A (zh) * | 2012-09-17 | 2014-03-26 | 腾讯科技(深圳)有限公司 | 远程调试方法和装置 |
CN103902358A (zh) * | 2014-03-18 | 2014-07-02 | 北京领通科技有限公司 | 移动终端的远程调试方法、***及移动终端 |
CN104536765A (zh) * | 2015-01-09 | 2015-04-22 | 苏州科达科技股份有限公司 | 登录、调试嵌入式设备的方法及*** |
CN109344065A (zh) * | 2018-09-27 | 2019-02-15 | 迈普通信技术股份有限公司 | 远程调试方法、调试服务器及目标机 |
CN109634852A (zh) * | 2018-11-30 | 2019-04-16 | 北京小米移动软件有限公司 | 程序调试方法及装置 |
CN111258887A (zh) * | 2020-01-09 | 2020-06-09 | 支付宝(杭州)信息技术有限公司 | 脚本语言应用的调试方法及其装置、终端 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61160154A (ja) * | 1985-01-07 | 1986-07-19 | Nec Corp | プログラム開発支援装置 |
US20020046364A1 (en) * | 2000-06-30 | 2002-04-18 | Miyoko Yoshimura | Debugging kernel system |
CN1471268A (zh) * | 2002-07-26 | 2004-01-28 | 上海贝尔有限公司 | 基于因特网的通用硬件联合调测平台 |
CN101741648A (zh) * | 2009-12-29 | 2010-06-16 | 中兴通讯股份有限公司 | 分布式远程测试***、方法、以及服务器 |
-
2012
- 2012-01-17 CN CN2012100152005A patent/CN102609353A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61160154A (ja) * | 1985-01-07 | 1986-07-19 | Nec Corp | プログラム開発支援装置 |
US20020046364A1 (en) * | 2000-06-30 | 2002-04-18 | Miyoko Yoshimura | Debugging kernel system |
CN1471268A (zh) * | 2002-07-26 | 2004-01-28 | 上海贝尔有限公司 | 基于因特网的通用硬件联合调测平台 |
CN101741648A (zh) * | 2009-12-29 | 2010-06-16 | 中兴通讯股份有限公司 | 分布式远程测试***、方法、以及服务器 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103684899A (zh) * | 2012-09-17 | 2014-03-26 | 腾讯科技(深圳)有限公司 | 远程调试方法和装置 |
CN103902358A (zh) * | 2014-03-18 | 2014-07-02 | 北京领通科技有限公司 | 移动终端的远程调试方法、***及移动终端 |
CN104536765A (zh) * | 2015-01-09 | 2015-04-22 | 苏州科达科技股份有限公司 | 登录、调试嵌入式设备的方法及*** |
CN104536765B (zh) * | 2015-01-09 | 2017-09-12 | 苏州科达科技股份有限公司 | 登录、调试嵌入式设备的方法及*** |
CN109344065A (zh) * | 2018-09-27 | 2019-02-15 | 迈普通信技术股份有限公司 | 远程调试方法、调试服务器及目标机 |
CN109634852A (zh) * | 2018-11-30 | 2019-04-16 | 北京小米移动软件有限公司 | 程序调试方法及装置 |
CN109634852B (zh) * | 2018-11-30 | 2022-03-18 | 北京小米移动软件有限公司 | 程序调试方法及装置 |
CN111258887A (zh) * | 2020-01-09 | 2020-06-09 | 支付宝(杭州)信息技术有限公司 | 脚本语言应用的调试方法及其装置、终端 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102609353A (zh) | 对程序调试进行管理的方法、装置及*** | |
CN104965700B (zh) | VxWorks操作***下实现驱动SPI设备的方法和*** | |
CN109598040B (zh) | 基于tcp协议的ns3与matlab集成的联合仿真接口方法 | |
CN107332932B (zh) | 一种基于fota的机器人***远程升级方法 | |
CN104461897A (zh) | 一种应用程序测试的方法和设备 | |
CN112187922A (zh) | 一种基于mqtt通信协议的智能物联网关机 | |
KR102274178B1 (ko) | 서버에서 시험 분산 애플리케이션을 에뮬레이션하는 기법 | |
CN106444610A (zh) | 一种plc远程代码更新***及方法 | |
CN104486146A (zh) | 一种测试控制台与测试设备之间的通信方法 | |
CN111159019B (zh) | 一种应用程序的测试方法、测试控制终端以及测试终端 | |
US11709722B2 (en) | Extensible communication framework and communication method supporting multiple communication protocols | |
CN106294119B (zh) | 测试调度***、方法及终端设备 | |
JP5676823B2 (ja) | データカードを更新する方法、パーソナルコンピュータ、およびデータカード | |
CN110958153A (zh) | 网络传输速率检测***、方法及存储介质 | |
CN204989857U (zh) | 一种基于先锋机器人的远程控制装置 | |
CN102739806A (zh) | 基于dsp/bios操作***的lxi仪器的vxi-11网络自动发现方法 | |
CN107277107B (zh) | 应用调试方法、装置及*** | |
CN110430110B (zh) | 一种现场总线网关及其协议转换方法 | |
CN106550026B (zh) | 一种网络通信装置及方法 | |
CN109634856B (zh) | 基于云服务的iOS智能终端远程真机调试***及方法 | |
CN110753363A (zh) | 一种智能设备无线调试***和方法 | |
CN106648805A (zh) | 一种智能装置、智能***及智能安装应用的方法 | |
CN104570967A (zh) | 基于Android***的远程控制方法及*** | |
CN116319723A (zh) | 一种安卓设备远程连接调试方法、设备及介质 | |
CN111182031B (zh) | Plc设备远程下载方法及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120725 |