当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]嵌入式系统软件开发环境中调试器的设计

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

500)this.style.width=500;" border="0" />

图1—1调试的一般过程
3、调试器的分类
 从调试器参与与调试的时机来看,或划分为静态调度器和动态调器两类。静态调试器的典型做法是在源程序中需要收集信息的位置插入跟踪语句,然后重新编译、执行程序,程序执行完毕后,用调试器分析执行时出跟踪语句保留下来的信息,将分析的结果给程序员作判断用。动态调器(又称源代码调试器或符号调试器),则是在程序运行的过程中动态地监控程序运行,并提供给程序员控制被调试程序的运行和访问被调试程序信息的手段。这一类调试器最本质的特征是提供有设置断点(breakpoint)和单步跟踪程序运行等能力,被调试程序运行时遇到断点后便停下来,调试器给程序员提供可从不同的角度观察程序运行情况的能力,以方便程序找出错原因,进而修改程序。本论文讨论的主要是这类调试器。其实,现在有些调试器这两种特点兼而有之。
从调试器提供给程序员的抽象层次来分,可分为高层调试器和低层解试器。所谓的低层调试器通常指调试程序时仅能在汇编代码一级反映程序的运行状态,程序员只能从指令级和CPU的各种寄存器状态中分析程序运行是否正常。高层调试器则指能在高级语言一级反映程序的运行状态的调试器。
从使用的被调试程序的功能特点来分,又可分为简单调试器。并行调试器,分布式调试器等等。
4、调试器设计应遵循的一般原则
●Heisnberg原则:调试器应尽量减少对被调试器对象的影响
特别是对于动态调试器来说,出于其直接介入了被调度对象的运行,就必须考虑这种介入是否对被调度器程序有所干扰,如果产生了干扰,其反映的被调试对象的信息肯定就不完全真实。对大多数传统的顺序执行的程序而言,出于被调试的程序进行与调试器程序进程不同一虚地址空间,因而不存在多大的干扰。但是,对于并行和分布式系统中的程序调试而言这种干扰就不可避免了,如何尽可能的减少对被调试对象的影响,则是这类调试器设计要考虑的首要问题。
●程序员通过调试器所获得的信息应真实反映被调试器执行的实际情况
如对于高层调试器设计而言,程序实际执行代码的实际位置得与源代码行应准确对应起来,特别是再考虑到允许编译器做代码优化工作话,这个原则更必须予以重视,因为代码优化之后,源代码行与目标代码指令序列的对应关系遭到破坏,从而也就打乱了目标文件调试信息中的对应关系。故一般调试程序时,都要求编译器在编译时不使用优化选项。
●尽可能我的给出有关被调试对象的上下文信息[!--empirenews.page--]
调试器应提供给程序员从不角度和层次观察调试对象状态和行为的功能。一般而言,调试器至少得具有断点设置和查看、单步跟踪程序执行流程、以及程序在断点处停下来时对各种寄存器和内存内容的访问、显示调用栈中函数的调用关系等等功能。当然,对于多进程和多线程的调试器,还得具有查看进程或线程之间的通信关系,以及它们各自的状态信息等等。
5、嵌入式系统软件开发中的调试方法
嵌入式系统产品的开发中,嵌入式操作系统和开发具起到非常重要的作用。首先嵌入式操作系统机构了软件开发的基本执行支撑,是软件开发的基础。另一方面,嵌入式系统产品的硬件通常使用专用芯片及System—On—Chinp技术,通常需要新的工具包支持。工具中编译工具对发挥芯片的性能至关重要,调试工具对开发效率至关重要。
对嵌入式系统的软件开环境而言,开发者所面对的硬件对象往往千差万别,软件开发的规模一般较小,还带有各种如实时性、内存大不、能耗小、安全性的特殊需求,调试荼就显成尤为重要。最早期的调试方法基本采取的是“crash and burn”的方法,即把编译好的目标代码“烧”到目标板上,让它跑起来,如果未得到预期结果,仔细检查源代码,猜测出问题可能出现的地方,尝试修试源代码,再重新“烧”到目标板上,再运行,一直重复这个过程,直到结果正确为止。使用这种方法,犹如在暗室中维修精密仪器,可想而各程序调试的难度有多大。
为了方便嵌入系统中代码的调试,在硬件上,出现了各种各样的具有调式功能的调试板(本文称之为目标板-Target)。如增加了串口,并口,网口使之通过串、并口线或网线并借助另外一台通用计算机(本文称之为主机-Host)把调式信息输出并显示出来,有的甚至在微代码一级增加了实现调试功能的指令。在软件上,也出现了大量嵌入式调试器,即使不是专门向嵌入系统的调试器往往也是一定程度上考虑了嵌入式系统软件调试功能。如Microsoft.VxWOrks,pSoS均提供图形化的易用的程序开发调试环境,开发调试环境已经监控系统核心(Kernel Aware),可视化整个系统(System Visual)。但由于一些嵌入式系统产品的通常使用专用芯片,其开发环境相对较弱,调试器的开发也必然是完善这些软件开发环境的重要环节。
6、嵌入式系统软件开发环境中调试器的特点
●具有跨平台的交叉调试功能,与嵌入系统软件开发环境的编译器一样,被调试程序的运行平台与调试器本身的运行平台往往是不一致的。
●一般得具有远程调试的功能。嵌入式系统中对程序的调试往往通过串口通信,网络通信等方式来完成调试器与运行目标程序的嵌入式设备的交互。这就使得被调试程序中得有实现这种交互的功能模块。
●根据嵌入式硬件环境的不同特点,针对这种硬件平台的调试器往往也具备一些独特功能。
●如果有某类嵌入式设备的仿真环境的话,相应的应用程序的调试一般先考虑在仿真环境下调试,以减少调试代价。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭