首页 | 官方网站   微博 | 高级检索  
相似文献
 共查询到20条相似文献,搜索用时 281 毫秒
1.
近年来,众核处理器技术飞速发展,而面向该体系架构的软件调试技术相对滞后。针对众核平台上软件调试的特点,提出了一种一对多的软件调试模型,基于开源调试器gdb,设计了指令移位断点算法。该设计克服了硬件断点数量的限制,提升了异常定位的精确度,改善了软件调试器的易用性。最后通过实例对采用该设计的软件调试器进行了验证。结果表明,该设计能够有效解决众核程序的调试问题,提高软件调试器的执行效率,帮助程序员快速定位软件错误。  相似文献   

2.
针对软件模拟硬件故障注入不能突破操作系统保护而使故障注入受到限制的问题,提出一种基于JTAG调试技术的硬件故障注入方法。当目标系统处于运行状态时,通过设置断点、设置观察点、发送调试请求等方式使目标系统在硬件层次中止当前运行模式,进入硬件调试模式。通过对基于总线扫描链的移位操作插入数据或CPU本身的指令,对系统内部的总线数据、寄存器数据、存储器数据进行修改。实验结果表明,该方法可以成功地实现故障注入。  相似文献   

3.
Windows NT进程检查点系统NTckpt的设计与实现   总被引:2,自引:0,他引:2  
设置进程检查点是保存和恢复进程运行状态的重要技术,是实现客错、卷回调试和进程迁移的重要手段。介绍了Windows NT操作系统的进程状态,以及基于该操作系统的进程检查点系统NTckpt的实现原理。NT ckpt实现了完全一致恢复用户地址空间,保汪了地址空间中动态分配数据区域的正确恢复。  相似文献   

4.
使软件系统基于当前状态恢复先前某一状态的方法通常有两种:检查点和反向计算.为比较这两种方法的实现代价,以如何实现最低代价的可逆排序为例,将增量检查点技术应用于简单选择排序算法,实现了一种通过增量保存程序运行时系统状态的变化信息以恢复系统先前某一状态的排序算法,并通过反向计算技术实现了一种无需系统状态历史信息仅通过系统当前状态和程序自身逻辑便恢复先前状态的可逆排序算法.通过大量测试用例验证了上述两类算法的正确性,并得出在大规模且数据交换频繁的场景下反向计算排序算法远优于检查点排序算法的结论.  相似文献   

5.
李丰  霍玮  陈聪明  李龙  衷璐洁  冯晓兵 《软件学报》2013,24(7):1455-1468
时至今日,调试仍然占据软件开发过程中近70%的时间;以断点的设置和检查为基础的传统交互式调试依旧是实际工作中最常用的错误定位手段.日常调试过程中,断点的选择和调试的效率主要依赖于调试人员自身的经验以及对所调试程序的理解程度.提出一种基于最小调试边界的断点自动生成方法.最小调试边界描述了一个由程序执行轨迹上一组轨迹点构成的结合.该集合具有对错误传播的阻隔性,以及所对应的程序状态规模最小化的特征.受益于最小调试边界(minimum debugging frontier set,简称MDFS)的错误阻隔性,一旦查明其上的程序状态是否符合设计预期,即可确定错误触发位置与该MDFS在程序执行轨迹上的先后顺序,将错误触发的范围限定在MDFS的一侧.而状态规模的最小化也减轻了用户检查断点处语句实例的开销.为评价断点质量,还制定了一组断点评价标准,用于考量断点与程序失效之间的关联性、断点本身的易判性以及对调试收敛的帮助.实验结果表明,采用该方法生成的断点具有检查开销低、加速调试收敛等优势;采用所提供的断点的调试流程,与基于经典错误定位方法的流程相比,能以更低的人工开销定位更多的错误.  相似文献   

6.
并发程序执行的不确定性导致了程序错误的不可再现性,后续的执行无法再现前次执行的错误,这使得以反复执行程序,重复再现故障为核心的循环调试方法变得不再可用。本文提出了一种基于确定性重演的并发程序的调试方法,确定化并发程序的执行轨迹,重现程序初始运行的错误状态。  相似文献   

7.
针对传统的基于垃圾指令插入的花指令技术在软件保护应用中的不足,提出了一种基于自封闭代码块的软件反静态分析和动态调试的软件保护技术。重点介绍了自封闭代码块的相关概念,阐述了自封闭代码块的自动生成技术,包括基于指令编码表的随机指令序列生成技术和基于指令逆向思想的逆指令序列生成技术,并给出了相关算法和实例分析。  相似文献   

8.
基于自封闭代码块的软件保护技术   总被引:1,自引:0,他引:1  
针对传统的基于垃圾指令插入的花指令技术在软件保护应用中的不足,提出了一种基于自封闭代码块的软件反静态分析和动态调试的软件保护技术.重点介绍了自封闭代码块的相关概念,阐述了自封闭代码块的自动生成技术,包括基于指令编码表的随机指令序列生成技术和基于指令逆向思想的逆指令序列生成技术,并给出了相关算法和实例分析.  相似文献   

9.
针对空中交通管制系统(ATC)中对飞行数据集群处理的可靠性要求,提出了一种基于Linux的用户级进程检查点设置与恢复方案.对基于该Linux用户级的进程检查点的飞行数据集群处理的各个主要模块进行了介绍,在此基础上给出了系统设计框架.从进程的初始化数据段、堆、栈和打开的文件的保存与恢复,给出了该方案的详细实现方法.该进程检查点设置与恢复方案不但可以在主机崩溃重启后恢复进程在重启前的运行状态,更重要的是可以在分布式系统通过进程迁移将保存的进程检查点迁移到其它主机运行,从而有效的提高系统的可靠性,减少运算损失.  相似文献   

10.
为解决嵌入式系统不支持本地调试且开发周期较长的问题,使用了一种通过PC机去控制嵌入式系统的远程调试方案.该方案针对32位嵌入式设备,设计并实现了C语言源代码级的远程调试系统.该系统由运行在Windows平台的上位机集成调试软件和驻留在目标设备中的Monitor组成.两部分软件相互作用与协调,用于实现C程序的编辑、编译、调试信息获取以及语句的跟踪调试功能.介绍了基于Monitor的远程调试机理和实现技术.实践证明该设计方案较好地解决了嵌入式系统调试过程中受限于系统自身资源与空间的问题,缩短了系统开发周期,达到了设计要求.  相似文献   

11.
Reverse debugging is the software development technique that effectively helps fix bugs occurring at the nondeterministic program behavior. It allows one to examine the past states of the program without rerunning it. An implementation of reverse debugging based on deterministic replay in the QEMU 2.0 emulator is described. A number of techniques improving the debugging performance due to reducing the amount of saved data, optimized storage of system snapshots, indexing, and compressing of the event log are proposed. The emulator can work together with the interactive GDB debugger, which makes it possible to use the reverse-continue, reverse-nexti, reverse-stepi and reverse-finish commands in the course of debugging. The execution time of these commands depends on the frequency of recording the system’s state snapshots. An estimate of the optimal frequency for the reverse-continue command is obtained.  相似文献   

12.
针对当前软件保护技术存在的不足,提出一种代码碎片化技术,该技术是一种以函数为单元,对函数进行代码shell化、内存布局随机化、执行动态链接化的新型软件保护技术,代码shell化实现代码碎片的位置无关变形,内存布局随机化实现代码碎片的随机内存加载,动态链接化实现对代码碎片的动态执行,通过上述3个环节实现对程序的碎片化处理。实验表明,代码碎片化技术不仅能实现程序执行过程中函数碎片内存位置的随机化,还能实现函数碎片的动态链接执行,增加程序静态逆向分析和动态逆向调试的难度,提高程序的抗逆向分析能力。  相似文献   

13.
The author introduces PROVIDE, a source-level process visualization and debugging environment currently under development at the University of Illinois at Chicago. PROVIDE is a modern coding and debugging environment that is designed to allow the user to configure interaction at a desired level of abstraction. It emphasizes the use of interactive computer graphics for the illustration of program execution, with special attention to the requirements of program debugging. The major features of PROVIDE are presented, especially the concepts of deferred-binding program animation, which allows users to interactively change the depiction of program execution during the debugging task, and process history consistency maintenance, which guarantees a consistent (automatically updated) record of program execution in the face of changes to program instructions and run-time data values. The current PROVIDE prototype is implemented on Macintosh workstations networked to a VAX 11/780 running 4.2 BSD Unix  相似文献   

14.
Programmers spend considerable time debugging code. Symbolic debuggers provide some help but the task remains complex and difficult. Other than breakpoints and tracing, these tools provide little high-level help. Programmers must perform many tasks manually that the tools could perform automatically, such as finding which statements in the program affect the value of an output variable for a given test case, and what was the value of a given variable when the control last reached a given program location. If debugging tools provided explicit support for these tasks, the debugging process could be automated to a significant extent. In this paper we present a debugging model, based on dynamic program slicing and execution backtracking techniques, that easily lends itself to automation. This model is based on experience with using these techniques to debug software. We also present a prototype debugging tool, SPYDER, that explicitly supports the proposed model, and with which we are performing further debugging research.  相似文献   

15.
Starting with the aim of modernizing legacy systems, often written in old programming languages, reverse engineering has extended its applicability to virtually every kind of software system. Moreover, the methods originally designed to recover a diagrammatic, high-level view of the target system have been extended to address several other problems faced by programmers when they need to understand and modify existing software. The authors’ position is that the next stage of development for this discipline will necessarily be based on empirical evaluation of methods. In fact, this evaluation is required to gain knowledge about the actual effects of applying a given approach, as well as to convince the end users of the positive cost–benefit trade offs. The contribution of this paper to the state of the art is a roadmap for the future research in the field, which includes: clarifying the scope of investigation, defining a reference taxonomy, and adopting a common framework for the execution of the experiments.  相似文献   

16.
Checking the reliability of software is an ever growing challenge. Fully automatic tools that attempt to cover the entire state space often fail because of state explosion. We present instead a toolset that employs some less-ambitious but useful methods to assist in software debugging. The toolset provides an automatic translation of the code into visual flowcharts, allowing the user to interactively select execution paths. It assists the user by calculating path conditions and exploring the neighborhood of the paths. It also allows the user to interactively step through the execution of the program, directed by temporal formulas interpreted over finite sequences. We will show several different ways of using these capabilities for debugging sequential and concurrent programs.  相似文献   

17.
面向RTEMS的嵌入式软件集成开发环境   总被引:2,自引:1,他引:1       下载免费PDF全文
实现面向RTEMS的嵌入式软件集成开发环境,提高嵌入式应用程序的可靠性和开发效率。在编译过程中添加缓冲区溢出动态检测模块,从而在程序运行过程中检测到缓冲区溢出,提高了程序可靠性。利用插桩技术实现远程调试环境,结合能对RTEMS进行定制的集成开发环境,提高了嵌入式应用程序的开发和调试效率,缩短了开发周期。  相似文献   

18.
The need for backward execution in debuggers has been raised a number of times. Backward execution helps a user naturally think backwards and, in turn, easily locate the cause of a bug. Backward execution has been implemented mostly by state-saving or checkpointing, which are inherently not scalable. In this paper, we present a method to generate reverse code, so that backtracking can be performed by executing reverse code. The novelty of our work is that we generate reverse code on-the-fly, while running a debugger, which makes it possible to apply the method even to debugging multi-threaded programs.  相似文献   

19.
周广川 《现代计算机》2011,(3):28-30,47
对多线程应用程序进行调试是一项具有挑战性的任务。多线程应用程序采用的互斥、同步技术使得调试时查看程序运行状态变得困难,线程的时序和多个线程间的交叉执行增加了程序调试的复杂性。采用适用于调试多线程应用程序的通用技术,并结合Visual Studio调试器提供的工具可以有效调试多线程应用程序。  相似文献   

20.
VS2008是当前软件开发常用的开发环境,其中在VS2008IDE下进行程序的开发,程序开发人员可以很好地利用该开发环境所继承的应用程序调试工具进行程序的调试工作。从对VS2008的开发环境的介绍谈起,就VS2008的IDE环境中对应用程序进行调试的方法进行了说明,最后对VS2008的IDE环境中应用程序进行调试的步骤进行了分析。  相似文献   

设为首页 | 免责声明 | 关于勤云 | 加入收藏

Copyright©北京勤云科技发展有限公司    京ICP备09084417号-23

京公网安备 11010802026262号