首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
嵌入式系统软件开发环境中调试器的设计
来源:本站整理  作者:佚名  2009-04-01 10:43:03



1、程序调式与调试器的设计与概述
   调试就是发现程序中的错误并修改错误的过程,在软件开发流程中,调试是一个比较重要的环节。调试器就是帮助程序员发现并排除错误的软件工具,它给程序员提供从不同角度观察程序执行情况的能力。同时,好的调试器也是“读”程序的好帮手,程序员通过调试器调试程序时提供的各种功能和运行时的状态信息可以更深刻地理解程序功能。可以说调试器的优劣是衡量软件开发环境好坏的重要标准。在嵌入式系统软件开发环境中,调试尤显其重要性。因为许多嵌入式应用系统的软件规模并不是太大,也就是说设计和代码编写工作量相对较小,而开发者所面对的硬件对象千差万别,操作系统和就用程序也往往是绑定在一起的,如何“导出”调式结果信息也是软硬件开发者必须考虑的一个问题。
2、调试的一般过程
当程序运行后未得到预期结果,也就是程序有了“问题”,如何从程序的运行结果出发找到出错的根源,不同的程序员可能各有自己不同的经验和方法,但基本的调试过程还是类似的,可简单图示如下:

图1—1调试的一般过程
3、调试器的分类
 从调试器参与与调试的时机来看,或划分为静态调度器和动态调器两类。静态调试器的典型做法是在源程序中需要收集信息的位置插入跟踪语句,然后重新编译、执行程序,程序执行完毕后,用调试器分析执行时出跟踪语句保留下来的信息,将分析的结果给程序员作判断用。动态调器(又称源代码调试器或符号调试器),则是在程序运行的过程中动态地监控程序运行,并提供给程序员控制被调试程序的运行和访问被调试程序信息的手段。这一类调试器最本质的特征是提供有设置断点(breakpoint)和单步跟踪程序运行等能力,被调试程序运行时遇到断点后便停下来,调试器给程序员提供可从不同的角度观察程序运行情况的能力,以方便程序找出错原因,进而修改程序。本论文讨论的主要是这类调试器。其实,现在有些调试器这两种特点兼而有之。
从调试器提供给程序员的抽象层次来分,可分为高层调试器和低层解试器。所谓的低层调试器通常指调试程序时仅能在汇编代码一级反映程序的运行状态,程序员只能从指令级和CPU的各种寄存器状态中分析程序运行是否正常。高层调试器则指能在高级语言一级反映程序的运行状态的调试器。
从使用的被调试程序的功能特点来分,又可分为简单调试器。并行调试器,分布式调试器等等。
4、调试器设计应遵循的一般原则
●Heisnberg原则:调试器应尽量减少对被调试器对象的影响
特别是对于动态调试器来说,出于其直接介入了被调度对象的运行,就必须考虑这种介入是否对被调度器程序有所干扰,如果产生了干扰,其反映的被调试对象的信息肯定就不完全真实。对大多数传统的顺序执行的程序而言,出于被调试的程序进行与调试器程序进程不同一虚地址空间,因而不存在多大的干扰。但是,对于并行和分布式系统中的程序调试而言这种干扰就不可避免了,如何尽可能的减少对被调试对象的影响,则是这类调试器设计要考虑的首要问题。
●程序员通过调试器所获得的信息应真实反映被调试器执行的实际情况
如对于高层调试器设计而言,程序实际执行代码的实际位置得与源代码行应准确对应起来,特别是再考虑到允许编译器做代码优化工作话,这个原则更必须予以重视,因为代码优化之后,源代码行与目标代码指令序列的对应关系遭到破坏,从而也就打乱了目标文件调试信息中的对应关系。故一般调试程序时,都要求编译器在编译时不使用优化选项。
●尽可能我的给出有关被调试对象的上下文信息

[1] [2]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:96,316.41000 毫秒