CN102129408B - 一种基于记录回放技术的嵌入式软件调试装置和方法 - Google Patents
一种基于记录回放技术的嵌入式软件调试装置和方法 Download PDFInfo
- Publication number
- CN102129408B CN102129408B CN 201110094131 CN201110094131A CN102129408B CN 102129408 B CN102129408 B CN 102129408B CN 201110094131 CN201110094131 CN 201110094131 CN 201110094131 A CN201110094131 A CN 201110094131A CN 102129408 B CN102129408 B CN 102129408B
- Authority
- CN
- China
- Prior art keywords
- debugging
- debugger
- server
- record
- target machine
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种基于记录回放技术的嵌入式软件调试装置和方法。包括至少两个宿主机和至少一个目标机,所述宿主机均包含调试器,其中的一个宿主机的调试器作为主调试器,其余宿主机的调试器作为从调试器。本发明的有益效果:本发明的装置和方法通过在目标机端添加一个记录模块,用于在调试过程中记录调试的过程,并生成记录数据。在宿主机与目标机之间增加一个记录模块,即“服务器”模块,用于存储管理调试记录数据。其它宿主机端的调试器可以通过调试服务器上的调试记录文件回放调试过程,可重现程序运行过程,达到了重现嵌入式调试过程与多机共享调试的目的。
Description
技术领域
本发明属于计算机嵌入式技术领域,尤其涉及嵌入式软件的调试技术领域。
背景技术
嵌入式系统是以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成。嵌入式操作系统和用户的应用程序都属于嵌入式软件。嵌入式软件就是基于嵌入式系统设计的软件,它也是计算机软件的一种,可细分成系统软件、支撑软件、应用软件三类,嵌入式软件是嵌入式系统的重要组成部分。由于嵌入式系统具有专用性强、体积小、功耗低等特点,嵌入式系统一般不会拥有丰富的系统资源,所以在嵌入式软件的开发过程中,通常采用交叉开发的方式。所谓交叉开发,是指在程序的开发环境和运行环境互相分离的情况下进行开发的一种方式。交叉开发的过程一般包括源码编写、交叉编译和交叉调试三个子过程。
在嵌入式软件的交叉开发方式中开发环境往往建立在资源丰富的计算机上,这个计算机叫做宿主机(Host)。在此开发环境中开发出的程序叫做目标程序,目标程序实际运行环境叫作目标机(Target)。交叉开发过程中源码编写、交叉编译都是在宿主机上完成,交叉调试需要宿主机与目标机共同完成。交叉调试是指调试器(Debugger)与目标程序(Inferior)不处于同一台宿主机上,交叉调试也叫远程调试,与交叉调试对应的叫做本地调试。
交叉调试过程中主要涉及了以下三个对象,宿主机上的调试器(Debugger)、目标机上的调试代理(Stub)和目标程序。调试器通过串口或者网口等方式与调试代理建立通信,调试代理完成对目标程序的运行控制和运行状态查看。
现有的交叉调试方式一般是通过一个宿主机与一个目标机直接连接进行调试,采用一对一的调试模式,并不能多机协作。再由于嵌入式系统中设备种类繁多、资源有限,软件的错误往往具有随机性和不确定性,想在以后的调试中再重现软件运行错误比较困难。
发明内容
本发明的目的是为了解决现有技术在嵌入式软件调试过程中实现多机协作和重现软件运行错误困难的不足,提出了一种基于记录回放技术的嵌入式软件调试装置和方法。
为了实现上述目的,本发明的技术方案:一种基于记录回放技术的嵌入式软件调试装置,包括至少两个宿主机和至少一个目标机,所述宿主机均包含调试器,其中的一个宿主机的调试器作为主调试器,其余宿主机的调试器作为从调试器,其特征在于,所述宿主机和目标机之间通过服务器连接并实现通信,
包含有主调试器的宿主机通过服务器和目标机通信连接用于掌握主调试控制权并负责通过服务器与目标机建立调试会话并进行调试以便在调试过程中产生调试记录数据;
包含有从调试器的宿主机与服务器通信连接用于通过服务器获取主调试器产生的调试记录数据以便在该宿主机上进行离线调试;
服务器与目标机连接用于接收、存储和管理目标机产生的调试记录数据,服务器与包含有主调试器的宿主机连接用于接收远程调试传输过来的命令,服务器与包含有从调试器的宿主机连接用于调取目标机产生的调试记录数据以便进行离线调试;
所述目标机与服务器连接并运行目标程序,所述调试代理控制目标机程序执行和读取目标程序的进程空间,所述调试代理与主调试器进行调试会话并在调试过程中通过目标机上的调试代理的记录模块产生调试记录数据。
为了实现上述目的,本发明的另一技术方案:一种基于记录回放技术的嵌入式软件调试方法,包括如下步骤:
步骤A.宿主机的主调试器与目标机上的调试代理建立调试会话,进行调试,启动调试过程记录功能;
步骤B.调试代理中的记录模块将记录调试过程,并动态生成调试记录数据,然后发送到服务器上;
步骤C.从调试器向服务器请求获取调试记录数据,服务器检索所请求数据并传输数据;
步骤D.从调试器进行离线调试,离线调试过程中可设置断点、正逆向单步/全速“执行”和查看内存与寄存器值。
本发明的有益效果:本发明的装置和方法通过在目标机端添加一个记录模块,用于在调试过程中记录调试的过程,并生成记录数据。在宿主机与目标机之间增加一个记录模块,即“服务器”模块,用于存储管理调试记录数据。其它宿主机端的调试器可以通过调试服务器上的调试记录文件回放调试过程,可重现程序运行过程。其它宿主机在回放过程中如果发现问题可通过申请并获取主调试控制权,与目标机建立新调试会话,达到了重现嵌入式调试过程与多机共享调试的目的。
附图说明
图1是本发明的一种基于记录回放技术的嵌入式软件调试装置的系统结构示意图。
图2是本发明的一种基于记录回放技术的嵌入式软件调试方法的主流程图。
图3是本发明的工作原理图。
图4是本发明方法的调试记录文件生成的详细流程图。
图5是本发明方法的离线调试与控制权切换的详细流程图。
具体实施方式
为了使本发明的目的,技术方案和优点更加清楚明白,以下结合附图对本发明做进一步说明。
如图1所示,一种基于记录回放技术的嵌入式软件调试装置,包括至少两个宿主机和至少一个目标机,所述宿主机均包含调试器,其中的一个宿主机的调试器作为主调试器,即图中“主调试器*1”的所表达的含义,其余宿主机的调试器作为从调试器,即图中“主调试器*n”的所表达的含义,n为自然数,其特征在于,所述宿主机和目标机之间通过服务器连接并实现通信,
包含有主调试器的宿主机通过服务器和目标机通信连接用于掌握主调试控制权并负责通过服务器与目标机建立调试会话并进行调试以便在调试过程中产生调试记录数据;
包含有从调试器的宿主机与服务器通信连接用于通过服务器获取主调试器产生的调试记录数据以便在该宿主机上进行离线调试;
服务器与目标机连接用于接收、存储和管理目标机产生的调试记录数据,服务器与包含有主调试器的宿主机连接用于接收远程调试传输过来的命令,服务器与包含有从调试器的宿主机连接用于调取目标机产生的调试记录数据以便进行离线调试;
所述目标机与服务器连接并运行目标程序,所述调试代理控制目标机程序执行和读取目标程序的进程空间,所述调试代理与主调试器进行调试会话并在调试过程中通过目标机上的调试代理的记录模块产生调试记录数据。
如图2所示,一种基于记录回放技术的嵌入式软件调试方法,包括如下步骤:
步骤A.宿主机的主调试器与目标机上的调试代理建立调试会话,进行调试,启动调试过程记录功能;
步骤A的详细过程包括:
步骤A1.启动调试会话:主调试器向目标机请求调试,主调试器与目标机上的调试代理建立通信,调试会话建立;
步骤A2.启动记录功能:在记录功能启动时,调试代理中的记录模块首先获取当前目标程序的进程状态,并生成一个进程快照,该进程快照被叫作初始状态进程快照,然后将其发送到服务器上;
上述进程快照属于快照技术的一种应用。快照技术的定义是:关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像。快照可以是其所表示的数据的一个副本,也可以是数据的一个复制品。进程快照是快照技术在诸多方面的应用中的一种实际应用类型,进程快照是指在程序正常运行时,周期性地设置快照,通过把进程信息保存到硬盘。当进程发生错误时,就可以通过检查点信息来实现进程的回卷。这样可以避免从头开始执行进程,因此极大节省了运行时间,提高了效率。
本实施例中并非周期性的设置快照,而是在某一个时间点主动生成进程快照,供以后调试和恢复进程状态使用。
步骤B.调试代理中的记录模块将记录调试过程,并动态生成调试记录数据,然后发送到服务器上;
步骤B的详细过程包括:
步骤B1.主调试器继续进行调试:调试过程中可单步/全速执行,对于在调试中的每一条指令的执行操作,如果改变了当前目标程序的进程运行状态,那在程序状态被改变之前,记录模块以增量记录的方式生成记录数据,发送到服务器上的记录存储模块的对应的记录链表上;
步骤B2.结束记录功能:结束记录功能时(包括正常结束、调试会话结束或目标程序异常退出等),记录模块再获取当前的目标程序的进程运行状态,生成一次进程快照,该进程快照被叫作结束状态进程快照,然后发送到服务器上,最后发送记录结束信号。如果因为某些因素结束状态进程快照无法生成就直接向服务器发送记录结束信号。调试记录数据生成完毕。
结束状态进程快照的作用是指当离线调试时,可以从先读取结束状态进程快照,由后往前回放,初始/结束状态进程快照只需存在一个即可,但是初始状态进程快照的生成更具有稳定性,一般将结束状态进程快照作为可选的参照。
上述步骤A和步骤B的全过程即为目标机端生成调试记录数据的方法,为了更好的理解上述过程,特绘制了与上述步骤A到步骤B全过程的更详细的流程图图3供参考。
步骤C.从调试器向服务器请求获取调试记录数据,服务器检索所请求数据并传输数据;
步骤C的详细过程包括:
步骤C1.服务器接收目标机发来的调试记录数据:如果为初始状态进程快照,则为此快照数据生成一个唯一标示和索引信息,将其类型设置为初始状态类型,然后将其存储为一个文件;如果为调试过程中状态改变而产生的记录数据,则将其放到指定的记录链表上;如果为结束状态进程快照,同初始状态进程快照一样处理,只是把它的类型设置为结束状态类型;
步骤C2.服务器接收宿主机发送过来的命令或请求:如果是主调试器发送来的调试命令,则通过命令转发模块对其进行转发;如果为从调试器发送来的请求命令,则通过记录索引检索到所请求的调试记录数据文件,将其传送到从调试器上。其他命令由相应的功能模块如服务器的其他模块完成。
D.从调试器进行离线调试,离线调试过程中可设置断点、正逆向单步/全速“执行”和查看内存与寄存器值。
步骤D的详细过程包括:
D1.从调试器读取初始状态进程快照文件和目标文件;
本步骤中,目标文件即为目标程序,该目标文件为可执行文件。
D2.建立虚拟的进程运行环境:通过读取初始状态进行快照文件中的内存段寄存器段和调试信息段等内容,在本宿主机上建立起一个重现当时目标程序运行状态的虚拟环境,但实际目标程序并未运行,而只是重现了当时的程序寄存器值、内存映像、函数调用栈、资源占用等信息;
如图3所示,则为发明的工作原理图,图中详细说明了记录数据与重现过程的对照关系,重现过程中的初始状态对应了记录数据中的初始状态快照,结束状态对应了结束状态快照,中间状态如状态1、状态2和状态3等等则对应了记录链表中的记录1、记录2和记录3等等,重现过程中的各种状态是通过各种指令如指令1、指令2、指令3直到指令*n调用记录数据中的各种数据如初始状态快照等而实现的。上述记录数据中的初始状态快照可以包含快照头部、程序头部表、寄存器段、内存映射段、占用资源段和动态库段等数据信息,记录1、记录2和记录3可以包括寄存器记录、内存记录、资源记录、其他记录、记录结束标志等数据信息,结束状态快照可以包含快照头部、程序头部表、寄存器段、内存映射段、占用资源段和动态库段等数据信息
步骤D3.与目标文件建立符号链接:从目标文件中读取文本段、调试信息段等数据,建立符号表映射、指令与源码行号映射等;
步骤D4.进行离线调试:从调试器通过调试命令(断点/单步/全速/查看内存、寄存器和调用栈等)进行调试,调试中并非是与执行的方式进行,而是以读取调试过程记录链表中的数据,动态改变对应位置的内存或寄存器,使进程状态得以改变;
步骤E.从调试器申请主控制权,申请成功后在原主调试器、现主调试器和目标机三部分之间完成调试会话切换,重新开始调试过程。
步骤E的详细过程包括:
步骤E1.从调试器向主调试器申请主调试控制权:此时的从调试器应当处于离线调试中;
步骤E2.主调试器同意申请:主调试器结束与目标机上调试代理的调试会话,结束通信;
步骤E3.从调试器生成恢复状态进程快照:根据当前被调试的进程的虚拟运行环境中的数据,生成恢复状态进程快照文件,通过服务器转发送到目标机;
步骤E4.目标机恢复目标程序运行状态:目标机中通过一个恢复进程状态功能的程序(叫作:恢复进程)以子进程方式启动目标程序,然后控制这个子进程,根据恢复状态进程快照文件的数据修改子进程运行数据,直接将子进程重置为当前运行状态;
步骤E5.重新建立调试会话:恢复进程再启动调试代理,调试代理以绑定(attach)的调试方式绑定到恢复进程的子进程上,这个子进程就是目标程序,当调试代理与目标程序建立通信后,恢复进程通知新的主调试器,新的主调试器与当前的调试代理建立调试会话,进行调试过程。
上述步骤D和步骤E分别为从调试器离线调试的方法和宿主机间主调试控制权切换方法,其中步骤E为可选步骤,只有当需要在宿主机之间切换控制权时才会进行步骤E,为了更好的理解上述过程,特绘制了与上述步骤D到步骤E全过程的更详细的流程图图4供参考。
下面,再结合具体的实施例对本发明的技术方案做进一步的说明:
为了便于理解本发明中所描述一种基于记录回放技术的嵌入式软件调试方法,本实施例于一个嵌入式集成开发环境中利用本发明所描述的软件调试方法。再对本实施例做详细描述前,首先解释会用到的专业术语:
gdb:GDB(GNU Debugger)是GNU开源组织发布的一个强大的UNIX下的程序调试工具,相当于本发明中的调试器,它位于宿主机上。
gdbserver:是类Unix系统的一个控制程序,相当于本发明中的调试代理,它位于目标机上。gdb通过远程连接gdbserver来调试程序,主要用于带有系统支持的应用程序的调试。
core dump:又叫内存转储或核心转储。它包括计算机程序在特定时间点的工作内存状态的记录,一般当程序异常终止(崩溃)时由系统内核生成。
core file:由core dump生成的文件,也叫核心转储文件。它的文件格式符合ELF(Executable and Linkable Format,可执行连接格式)文件格式,该文件被存储到服务器上的记录存储模块。
在本实施例中宿主机中使用的调试器为gdb,并对gdb进行了功能增强,对core file的调试中可支持正逆向单步/全速执行,增强了离线调试功能。目标机上的调试代理为gdbserver,操作系统为linux。服务器为集成开发环境中的一个子模块。调试过程记录文件的进程快照文件采用类core file的格式,生成方式可使用gdb带有的“gcore”功能实现;记录链表(record list)采用链表数据结构存储。
本实施例的主要过程可参考图1和图2所示,其调试过程为:首先由主调试器连接目标机上调试代理进行调试,生成调试过程记录文件,并传到服务器上;然后由从调试器调试调试过程记录文件。最后从调试器可申请主调试控制权,成功后系统切换主控制权,重新建立调试会话。由于调试会话建立与传统过程类似,就不再重述。以下详细介绍上述过程的调试过程记录文件生成过程、离线调试过程和主调试控制权切换过程。
调试过程记录文件生成的过程(即目标机端生成调试记录数据的方法)具体如下:
1.启动记录命令;
2.gdbserver通过自带的“gcore”命令生成当时的程序运行初始状态进程快照;
3.对此进程快照进行修改,加入自定义信息,如初始状态标示符等;
4.生成初始状态快照文件,传到服务器上;
5.主调试器继续进行调试;
6.在目标程序中,每条指令执行后,记录下被修改的程序状态,包括被修改的寄存器号及其值、被修改内存地址及其值(以字节为单位);将这些值存储到一个结构中;
7.将以上结构组成一条执行记录回传到服务器添加到记录链表上;
8.结束记录命令,同2步描述方式生成结束状态进程快照并传送到服务器上,并向服务器发送结束记录信号;如果由于某种原因不能生成结束状态则直接发生结束记录信号。
从离线调试的过程(即从调试器离线调试的方法)具体如下:
1.某宿主机的从调试器向服务器请求调试记录数据文件,服务器回应,宿主机获取调试记录数据文件;
2.从调试器建立虚拟的进程运行环境:对于改进后的core file,gdb同样支持调试,初始化过程和一般的core file一样;大致包括寄存器状态、内存映象、动态链接库(由于宿主机目标机可能是不同操作系统,目标机动态库宿主机不一定支持,但是这是建立的虚拟环境,并非真实运行)和占用资源表情况等;
3.建立符号表映射:在此宿主机上需保存一份带调试信息的目标文件,gdb在读取进程快照的同时会读取此目标文件;gdb从目标文件读取符号表、段表等信息,建立符号表映射;
4.进行离线调试:修改后的gdb在对core file支持的基础增加了一个模块,此模块支持对初始/结束状态进程快照的调试,新增单步/全速执行命令;gdb根据调试记录链表上的数据内容改变虚拟运行环境中的数据,使进程状态得以改变;
5.调试器选择正/逆向重现调试过程,直到结束此过程。
主调试控制权切换的过程(即宿主机间主调试控制权切换方法)具体如下:
1.处于离线调试中的从调试器向主调试器申请主调试控制权;
2.主调试器放弃主调试控制权,与目标机中调试代理结束调试会话,此时申请的从调试器成为准主调试器;
3.准主调试器根据当前虚拟进程运行环境的虚拟进程状态生成恢复状态进程快照,发送到目标机;
4.目标机上的恢复进程接收到恢复状态进程快照,以子进程方式启动此进程快照对应的目标文件,然后控制子进程,根据恢复状态进程快照中的数据,写子进程的进程运行空间数据,将子进程的进程运行状态恢复到恢复状态进程快照所描述的状态;
5.恢复进程再以参数“gdbserver–attach pid”(pid:Process Identifier进程控制符,父进程创建子进程时可得到子进程pid)启动gdbserver,使gdbserver以绑定的方式附着到上述子进程中,此时的gdbserver与此子进程建立了调试与被调试关系;
6.恢复进程通知准主调试器所有准备工作完毕,准主调试器与gdbserver建立连接,建立调试会话,主调试控制权切换完成,可以继续新的调试过程。
本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。
Claims (8)
1.一种基于记录回放技术的嵌入式软件调试装置,包括至少两个宿主机和至少一个目标机,所述宿主机均包含调试器,其中的一个宿主机的调试器作为主调试器,其余宿主机的调试器作为从调试器,其特征在于,所述宿主机和目标机之间通过服务器连接并实现通信,
包含有主调试器的宿主机通过服务器和目标机通信连接用于掌握主调试控制权并负责通过服务器与目标机建立调试会话并进行调试以便在调试过程中由主调试器产生调试记录数据;
包含有从调试器的宿主机也通过服务器和目标机通信连接用于掌握主调试控制权并负责通过服务器获取主调试器产生的调试记录数据以便在该宿主机上进行离线调试;
服务器与目标机连接用于接收、存储和管理目标机产生的调试记录数据,服务器与包含有主调试器的宿主机连接用于接收远程调试传输过来的命令,服务器与包含有从调试器的宿主机连接用于调取目标机产生的调试记录数据以便进行离线调试;
所述目标机与服务器连接以便运行目标程序,所述目标程序通过目标机上的调试代理与主调试器进行调试会话并在调试过程中通过目标机的记录模块产生调试记录数据。
2.一种基于记录回放技术的嵌入式软件调试方法,包括如下步骤:
步骤A.宿主机的主调试器与目标机上的调试代理建立调试会话,进行调试,启动调试过程记录功能;
步骤B.调试代理中的记录模块将记录调试过程,并动态生成调试记录数据,然后发送到服务器上;
步骤C.从调试器向服务器请求获取调试记录数据,服务器检索所请求数据并传输数据;
步骤D.从调试器进行离线调试,离线调试过程中可设置断点、正逆向单步/全速“执行”和查看内存与寄存器值。
3.根据权利要求2所述的一种基于记录回放技术的嵌入式软件调试方法,其特征在于,上述步骤A的详细过程包括:
步骤A1.启动调试会话:主调试器向目标机请求调试,主调试器与目标机上的调试代理建立通信,调试会话建立;
步骤A2.启动记录功能:在记录功能启动时,调试代理中的记录模块首先获取当前目标程序的进程状态,并生成一个进程快照,该进程快照被叫作初始状态进程快照,然后将其发送到服务器上。
4.根据权利要求2所述的一种基于记录回放技术的嵌入式软件调试方法,其特征在于,上述步骤B的详细过程包括:
步骤B1.主调试器继续进行调试:调试过程中可单步/全速执行,对于在调试中的每一步执行操作,如果改变了当前目标程序的进程运行状态,那在程序状态被改变之后,记录模块以增量记录的方式生成记录数据,发送到服务器上的记录存储模块的对应的记录链表上;
步骤B2.结束记录功能:结束记录功能时,记录模块再获取当前的目标程序的进程运行状态,生成一次进程快照,该进程快照被叫作结束状态进程快照,然后发送到服务器上,最后发送记录结束信号;如果因为某些因素结束状态进程快照无法生成就直接向服务器发送记录结束信号;调试记录数据生成完毕。
5.根据权利要求2所述的一种基于记录回放技术的嵌入式软件调试方法,其特征在于,上述步骤C的详细过程包括:
步骤C1.服务器接收目标机发来的调试记录数据:如果为初始状态进程快照,则为此快照数据生成一个唯一标示和索引信息,将其类型设置为初始状态类型,然后将其存储为一个文件;如果为调试过程中状态改变而产生的记录数据,则将其放到指定的记录链表上;如果为结束状态进程快照,同初始状态进程快照一样处理,只是把它的类型设置为结束状态类型;
步骤C2.服务器接收宿主机发送过来的命令或请求:如果是主调试器发送来的调试命令,则通过命令转发模块对其进行转发;如果为从调试器发送来的请求命令,则通过记录索引检索到所请求的调试记录数据文件,将其传送到从调试器上。
6.根据权利要求2所述的一种基于记录回放技术的嵌入式软件调试方法,其特征在于,上述步骤D的详细过程包括:
步骤D1.从调试器读取初始状态进程快照文件和目标文件;
步骤D2.建立虚拟的进程运行环境:通过读取初始状态进行快照文件中的内容,在本宿主机上建立起一个重现当时目标程序运行状态的虚拟环境,但实际目标程序并未运行,而只是重现了当时的目标程序的信息;
步骤D3.与目标文件建立符号链接:从目标文件中读取文本段、调试信息段数据,建立符号表映射、指令与源码行号映射;
步骤D4.进行离线调试:从调试器通过调试命令进行调试,调试中并非是与执行的方式进行,而是以读取调试过程记录链表中的数据,动态改变对应位置的内存或寄存器,使进程状态得以改变。
7.根据权利要求2所述的一种基于记录回放技术的嵌入式软件调试方法,其特征在于,还包括步骤E:从调试器申请主控制权,申请成功后在原主调试器、现主调试器和目标机三部分之间完成调试会话切换,重新开始调试过程。
8.根据权利要求7所述的一种基于记录回放技术的嵌入式软件调试方法,其特征在于,上述步骤E的详细过程包括:
步骤E1.从调试器向主调试器申请主调试控制权:此时的从调试器应当处于离线调试中;
步骤E2.主调试器同意申请:主调试器结束与目标机上调试代理的调试会话,结束通信;
步骤E3.从调试器生成恢复状态进程快照:根据当前被调试的进程的虚拟运行环境中的数据,生成恢复状态进程快照文件,通过服务器转发送到目标机;
步骤E4.目标机恢复目标程序运行状态:目标机中通过一个恢复进程状态功能的程序以子进程方式启动目标程序,然后控制这个子进程,根据恢复状态进程快照文件的数据修改子进程运行数据,直接将子进程重置为当前运行状态;
步骤E5.重新建立调试会话:恢复进程再启动调试代理,调试代理以绑定的调试方式绑定到恢复进程的子进程上,这个子进程就是目标程序,当调试代理与目标程序建立通信后,恢复进程通知新的主调试器,新的主调试器与当前的调试代理建立调试会话,进行调试过程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110094131 CN102129408B (zh) | 2011-04-14 | 2011-04-14 | 一种基于记录回放技术的嵌入式软件调试装置和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110094131 CN102129408B (zh) | 2011-04-14 | 2011-04-14 | 一种基于记录回放技术的嵌入式软件调试装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102129408A CN102129408A (zh) | 2011-07-20 |
CN102129408B true CN102129408B (zh) | 2013-09-25 |
Family
ID=44267495
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110094131 Expired - Fee Related CN102129408B (zh) | 2011-04-14 | 2011-04-14 | 一种基于记录回放技术的嵌入式软件调试装置和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102129408B (zh) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102214138A (zh) * | 2011-05-19 | 2011-10-12 | 福建星网视易信息系统有限公司 | 一种嵌入式系统软件的网络集中调试方法 |
CN103577315B (zh) * | 2012-07-30 | 2017-02-22 | 国际商业机器公司 | 反向调试器和反向调试方法 |
US8909990B2 (en) | 2012-08-04 | 2014-12-09 | Microsoft Corporation | Historical software diagnostics using lightweight process snapshots |
CN103057566B (zh) * | 2012-12-25 | 2015-05-20 | 卡斯柯信号有限公司 | 一种铁路信号维护系统的调试方法 |
CN103235755A (zh) * | 2013-04-16 | 2013-08-07 | 合肥联宝信息技术有限公司 | 一种bios远程网络调试方法 |
US9405645B2 (en) * | 2013-11-14 | 2016-08-02 | Microsoft Technology Licensing, Llc | User support experience with automatically generated virtual environment |
US10289411B2 (en) | 2013-11-18 | 2019-05-14 | Microsoft Technology Licensing, Llc | Diagnosing production applications |
US9612939B2 (en) | 2014-10-29 | 2017-04-04 | Microsoft Technology Licensing, Llc. | Diagnostic workflow for production debugging |
US9632915B2 (en) * | 2014-10-29 | 2017-04-25 | Microsoft Technology Licensing, Llc. | Historical control flow visualization in production diagnostics |
CN105630664B (zh) * | 2014-11-06 | 2020-03-13 | 中兴通讯股份有限公司 | 一种反向调试方法、装置及调试器 |
CN105740139B (zh) * | 2014-12-09 | 2018-12-07 | 北京中船信息科技有限公司 | 一种基于虚拟环境的嵌入式软件调试方法 |
CN104965786B (zh) * | 2015-06-25 | 2019-01-11 | 上海华为技术有限公司 | 一种应用程序的调试方法、调试主机及运行主机 |
CN105138459B (zh) * | 2015-09-11 | 2019-02-15 | 珠海豹趣科技有限公司 | 一种对软件程序进行测试的方法及装置 |
CN105550118B (zh) * | 2016-01-27 | 2018-01-30 | 珠海格力电器股份有限公司 | 调试系统和调试方法 |
CN106227586B (zh) * | 2016-07-11 | 2019-08-27 | 珠海豹趣科技有限公司 | 进程状态的管理方法、任务完成的判断方法、装置及设备 |
CN106201896A (zh) * | 2016-07-26 | 2016-12-07 | 华中科技大学 | 一种嵌入式环境下基于检查点的调试方法、系统及装置 |
CN106445787B (zh) * | 2016-09-30 | 2019-04-23 | 北京金山安全软件有限公司 | 一种监控服务器核心转储文件的方法、装置及电子设备 |
CN110177076B (zh) * | 2019-04-16 | 2022-08-23 | 凯通科技股份有限公司 | 面向多协议多类型设备接入方法、电子设备及存储介质 |
CN111782525B (zh) * | 2020-06-30 | 2023-08-22 | 中国工商银行股份有限公司 | Java方法远程调试方法及装置 |
CN111737041A (zh) * | 2020-07-31 | 2020-10-02 | 北京搜狐新动力信息技术有限公司 | 软件数据的处理方法、装置、可读介质及设备 |
CN112231221A (zh) * | 2020-10-26 | 2021-01-15 | 积成电子股份有限公司 | 一种嵌入式Linux系统应用程序的调测方法及系统 |
CN112416790B (zh) * | 2020-11-30 | 2023-04-14 | 中国航空工业集团公司西安航空计算技术研究所 | 一种嵌入式软件离线重放调试方法和装置 |
CN112711527B (zh) * | 2020-12-16 | 2024-02-06 | 北京科银京成技术有限公司 | 一种实时进程的调试方法、装置、目标机和存储介质 |
CN112579460B (zh) * | 2020-12-24 | 2023-04-14 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于多核嵌入式系统的多级调试方法 |
CN112699056B (zh) * | 2021-03-23 | 2021-07-16 | 统信软件技术有限公司 | 一种程序调试方法、计算设备及储存介质 |
CN115037663B (zh) * | 2022-05-26 | 2023-07-18 | 深圳前海微众银行股份有限公司 | 一种应用系统更新测试方法及装置 |
CN115629992B (zh) * | 2022-12-16 | 2023-04-07 | 云筑信息科技(成都)有限公司 | 一种对使用Spring技术栈构建的应用系统进行调试的方法 |
CN117667722B (zh) * | 2023-12-08 | 2024-07-23 | 中科世通亨奇(北京)科技有限公司 | 程序跟踪调试的方法、系统、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6182246B1 (en) * | 1999-01-21 | 2001-01-30 | Bsquare Corporation | Protocol acknowledgment between homogeneous system |
JP2001344127A (ja) * | 2000-05-31 | 2001-12-14 | Hitachi Ltd | システム開発方法、記憶媒体、情報処理装置、情報端末装置、情報処理システム及び情報処理方法 |
CN1139876C (zh) * | 1999-11-30 | 2004-02-25 | 深圳市中兴通讯股份有限公司 | 嵌入式软件辅助调试方法 |
CN1967498A (zh) * | 2005-11-15 | 2007-05-23 | 中兴通讯股份有限公司 | 一种嵌入式软件的编译调试方法 |
CN101349991A (zh) * | 2008-09-18 | 2009-01-21 | 浙江大学 | 嵌入式调试代理与连接管理器的协同设计实现方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7992137B2 (en) * | 2007-07-30 | 2011-08-02 | Nvidia Corporation | Client server system for analysis and performance tuning of remote graphics devices |
-
2011
- 2011-04-14 CN CN 201110094131 patent/CN102129408B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6182246B1 (en) * | 1999-01-21 | 2001-01-30 | Bsquare Corporation | Protocol acknowledgment between homogeneous system |
CN1139876C (zh) * | 1999-11-30 | 2004-02-25 | 深圳市中兴通讯股份有限公司 | 嵌入式软件辅助调试方法 |
JP2001344127A (ja) * | 2000-05-31 | 2001-12-14 | Hitachi Ltd | システム開発方法、記憶媒体、情報処理装置、情報端末装置、情報処理システム及び情報処理方法 |
CN1967498A (zh) * | 2005-11-15 | 2007-05-23 | 中兴通讯股份有限公司 | 一种嵌入式软件的编译调试方法 |
CN101349991A (zh) * | 2008-09-18 | 2009-01-21 | 浙江大学 | 嵌入式调试代理与连接管理器的协同设计实现方法 |
Non-Patent Citations (2)
Title |
---|
《GRDBS:一种针对嵌入式系统的通用远程调试系统》;彭进展,尹宝林,黄鑫;《计算机工程》;20030228;第29卷(第2期);109-111 * |
《嵌入式应用的远程调试》;张栋岭,刘献科,邓晓艳,朱培彦,陈涵生;《计算机工程》;20030731;第29卷(第11期);76-78 * |
Also Published As
Publication number | Publication date |
---|---|
CN102129408A (zh) | 2011-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102129408B (zh) | 一种基于记录回放技术的嵌入式软件调试装置和方法 | |
US11080166B2 (en) | Database trace debugger | |
US7552044B2 (en) | Simulated storage area network | |
US9514029B2 (en) | Partial recording of a computer program execution for replay | |
CN112074817A (zh) | 具有跨级别跟踪映射的执行控制 | |
US8527961B2 (en) | Expression-level debugging without format changes | |
CN104965757A (zh) | 虚拟机热迁移的方法、虚拟机迁移管理装置及系统 | |
CN103164523A (zh) | 数据一致性检查方法、装置及系统 | |
CN104346274A (zh) | 程序调试器及一种程序的调试方法 | |
US7472052B2 (en) | Method, apparatus and computer program product for simulating a storage configuration for a computer system | |
CN103077112A (zh) | 一种软件调试的方法和系统 | |
WO2013075014A1 (en) | Systems and methods for debugging just-in-time static translation in an emulated system | |
KR20080052341A (ko) | 내장형 시스템 소프트웨어 자동 테스트 시스템 및 방법과테스트 시나리오 작성 방법 | |
CN115168129A (zh) | 植入仿真器的自动化测试系统及ssd硬盘测试方法 | |
CN113632067A (zh) | 利用跟踪代码的记录执行来仿真非跟踪代码 | |
CN117707969B (zh) | 一种基于ARMv8的操作系统调测系统 | |
JP2007058813A (ja) | 検証装置及び検証方法 | |
CN117370093A (zh) | 一种芯片调试方法、装置、设备及存储介质 | |
CN112711527B (zh) | 一种实时进程的调试方法、装置、目标机和存储介质 | |
WO2023038716A1 (en) | Source code editing combining edit and continue with hot reload | |
CN112328491B (zh) | 追踪消息的输出方法、电子设备及存储介质 | |
US9733990B2 (en) | Information processing system and program migration method | |
CN103617077A (zh) | 智能型云端化移转的方法与系统 | |
CN113660123A (zh) | 虚拟交换机升级方法、装置、电子设备以及存储介质 | |
CN116578446B (zh) | 虚拟机备份方法、装置、系统、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130925 Termination date: 20160414 |