嵌入式共享远程调试技术的研究与实现
发布时间:2020-04-02 16:10
【摘要】:当今,随着嵌入式系统的广泛应用,相关技术发展迅猛。嵌入式系统软硬件更新频繁,需求旺盛,嵌入式开发技术已成为非常热门的研究领域。提高嵌入式系统的软件的开发效率和可靠性具有显著的意义。 在传统的嵌入式软件开发中,调试作为一个复杂而必要的环节,当前典型的嵌入式调试技术已逐渐显得低效。为此本文从四个方面提出一种新的软件调试技术以解决这个问题。第一,使用记录/回放的逆向调试功能,可使程序向后执行,不用重启调试过程。第二,生成程序某时刻运行状态的进程快照,并记录随后的指令执行,生成记录链表,通过这个进程快照和记录链表可以实现离线的程序段调试,重现程序执行过程。第三,在离线调试中生成某一时刻的进程快照文件,通过这一文件恢复目标程序的运行状态,直接调试某一时刻程序的状态,提高可定位问题的效率。第四,通过在多机之间使用这个过程,可以实现整个调试系统的共享,包括程序运行过程的共享和调试资源的共享。 为此本文提出了一种新的调试模型——共享调试模型,通过这一模型可以在逆向调试、重现程序运行、多机协作、资源共享方面对调试过程进行改进。本文最后将共享调试模型应用在嵌入式远程调试中,实现了一个嵌入式共享远程调试系统。经实践该系统能达到缩短调试过程、团队协作调试、共享调试资源的目地,提高了嵌入式软件调试的效率。
【图文】:
[19]。它的结构图 2-6 所示:图2-6 逆向调试器 PORD 框架2.4.3基于日志记录的逆向调试技术现在大多数的逆向调试都是基于日志记录的。基于日志记录的方式最具体的形式就是记录/回放(record/replay),大致思想就是记录下程序执行过程中的一切变化,然后当逆向执行时根据这些变化回放程序的执行过程。在 1.2.2.4 中已经介绍了 GDB7.0 及更高版本已经支持记录/回放的逆向调试功能。GDB 的逆向调试命令如下所示[29]:表2-2 GDB 的逆向调试命令命令(缩写) 作用reverse-continue ('rc')逆向运行直到遇到停止事件(断点、观察点、异常)reverse-finish finish命令的逆向形式,逆向执行当前函数直到返回到调用者reverse-next ('rn')逆向 next,逆向运行函数,不进入函数体reverse-nexti ('rni')逆向 nexti,逆向运行一条指令,当指令是从一个函数返回时,逆向运行整个函数reverse-step ('rs')逆向运行直到前一行代码前reverse-stepi逆向运行一条指令set exec-direction(forward/reverse)设置一般命令的执行方向当 GDB 输入 record 命令时,GDB 就通过添加一个 record target 来记录程序运行时中引起进程的变化那些数据,生成一个 record_list。在运行表 2-2 中的命令就
图2-7 GDB 在 i386-linux 下的记录/回放结构具体平台下 GDB 通过 process_record 和 process_record_signal出了进指令和信号对进程状态产生变化的数据。对于系统调用的记录,,在中实现不一样,在 linux 中统一使用 record_linux_system_call 函数。 linux 下的几百个系统调用,并给出各自的记录方式。0 年邵腾刚[18]分别于 2008 和 2010 年分别提出了两种都基于日志记录试技术。邵腾刚提出的基于 Xen 虚拟机的逆向调试方法结合了确定
【学位授予单位】:电子科技大学
【学位级别】:硕士
【学位授予年份】:2011
【分类号】:TP368.1
【图文】:
[19]。它的结构图 2-6 所示:图2-6 逆向调试器 PORD 框架2.4.3基于日志记录的逆向调试技术现在大多数的逆向调试都是基于日志记录的。基于日志记录的方式最具体的形式就是记录/回放(record/replay),大致思想就是记录下程序执行过程中的一切变化,然后当逆向执行时根据这些变化回放程序的执行过程。在 1.2.2.4 中已经介绍了 GDB7.0 及更高版本已经支持记录/回放的逆向调试功能。GDB 的逆向调试命令如下所示[29]:表2-2 GDB 的逆向调试命令命令(缩写) 作用reverse-continue ('rc')逆向运行直到遇到停止事件(断点、观察点、异常)reverse-finish finish命令的逆向形式,逆向执行当前函数直到返回到调用者reverse-next ('rn')逆向 next,逆向运行函数,不进入函数体reverse-nexti ('rni')逆向 nexti,逆向运行一条指令,当指令是从一个函数返回时,逆向运行整个函数reverse-step ('rs')逆向运行直到前一行代码前reverse-stepi逆向运行一条指令set exec-direction(forward/reverse)设置一般命令的执行方向当 GDB 输入 record 命令时,GDB 就通过添加一个 record target 来记录程序运行时中引起进程的变化那些数据,生成一个 record_list。在运行表 2-2 中的命令就
图2-7 GDB 在 i386-linux 下的记录/回放结构具体平台下 GDB 通过 process_record 和 process_record_signal出了进指令和信号对进程状态产生变化的数据。对于系统调用的记录,,在中实现不一样,在 linux 中统一使用 record_linux_system_call 函数。 linux 下的几百个系统调用,并给出各自的记录方式。0 年邵腾刚[18]分别于 2008 和 2010 年分别提出了两种都基于日志记录试技术。邵腾刚提出的基于 Xen 虚拟机的逆向调试方法结合了确定
【学位授予单位】:电子科技大学
【学位级别】:硕士
【学位授予年份】:2011
【分类号】:TP368.1
【参考文献】
相关期刊论文 前1条
1 王强;张宇e
本文编号:2612160
本文链接:https://www.wllwen.com/kejilunwen/jisuanjikexuelunwen/2612160.html