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

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、嵌入式系统软件开发环境中调试器的特点
●具有跨平台的交叉调试功能,与嵌入系统软件开发环境的编译器一样,被调试程序的运行平台与调试器本身的运行平台往往是不一致的。
●一般得具有远程调试的功能。嵌入式系统中对程序的调试往往通过串口通信,网络通信等方式来完成调试器与运行目标程序的嵌入式设备的交互。这就使得被调试程序中得有实现这种交互的功能模块。
●根据嵌入式硬件环境的不同特点,针对这种硬件平台的调试器往往也具备一些独特功能。
●如果有某类嵌入式设备的仿真环境的话,相应的应用程序的调试一般先考虑在仿真环境下调试,以减少调试代价。

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

Lua RTOS 是一个实时操作系统,设计在嵌入式系统上运行,对 FLASH 和 RAM 内存的要求最低。目前 Lua RTOS 可用于 ESP32, ESP8266 和 PIC32MZ 平台,并可以轻松移植到其他32位...

关键字: Lua RTOS 操作系统 嵌入式系统

通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UATR,是一种串行、异步、全双工的收发器。全双工的UART支持同时双向通信,是嵌入式系统必不可少的d...

关键字: 异步收发 传输器 嵌入式系统

Flash Memory 是一种非易失性的存储器。在嵌入式系统中通常用于存放系统、应用和数据等。在 PC 系统中,则主要用在固态硬盘以及主板 BIOS 中。

关键字: Flash 存储器 嵌入式系统

该统一硬件提供灵活的容量,既可为硬件验证提供更快的编译,又可为软件开发提供更佳的性能 加利福尼亚州山景城2022年9月27日 /美通社/ -- 新思科技(纳斯达克股票代码:SNPS)近日宣布推出业内首款基于其ZeBu&...

关键字: 芯片 硬件仿真 新思科技 软件开发

近年来,随着计算机技术及集成电路技术的发展,嵌入式技术日渐普及,在通讯、网络、工控、医疗、电子等领域发挥着越来越重要的作用。嵌入式系统无疑成为当前最热门最有发展前途的IT应用领域之一。 嵌入式系统一般由嵌入式微处理器、外...

关键字: 嵌入式 嵌入式系统 计算机

深圳2022年8月26日 /美通社/ -- 8月17日 – 深圳,AMD Xilinx举办为期一天的线下技术日活动,在AMD Xilinx主办下宜鼎国际作为合作伙伴的身份被邀...

关键字: AMD Xilinx AGENT 嵌入式系统

单向散列算法,又称hash哈希函数,Hash函数(也称杂凑算法)就是把任意长的输入消息串变化成固定长的输出串的一种函数,该过程是不可逆的。Hash函数可用于数字签名、消息的完整性检测、消息起源的认证检测等。较为常用的方法...

关键字: 嵌入式算法 嵌入式系统

作为消费者,在我们考虑购买电池供电设备时,通常首先要检查的关键指标之一是一次充电可以使用多长时间。电池寿命已成为许多可穿戴设备的重要卖点,但对于越来越多的工业物联网传感器和其他类似应用来说,电池寿命同样也是一个重要的考虑...

关键字: 贸泽电子 嵌入式系统

摘要:创造性地将"通用双公式"模型嵌入到纤维缠绕层网格理论中,解决了因传统网格理论无法准确模拟纤维纱片在高纬度球壳处的重叠现象而带来的纤维层结构设计安全裕度大、结构效率低的问题。基于新方法理论,以球形复合材料气瓶为例,分...

关键字: 球形COPV 纤维缠绕层结构设计 软件开发

(全球TMT2022年7月22日讯)近日,TUV北德在比亚迪汽车工业公司(简称“比亚迪”)总部六角大楼向比亚迪颁发ASPICE L2级评估证书。ASPICE 全称为“Automotive Software Proces...

关键字: SPICE 比亚迪 汽车 软件开发

嵌入式教程

6897 篇文章

关注

发布文章

编辑精选

技术子站

关闭