

远程调试的设计与实现
- 期刊名字:计算机工程与应用
- 文件大小:331kb
- 论文作者:黄瑞芳,朱敏,张卫民
- 作者单位:国防科技大学计算机学院
- 更新时间:2020-11-03
- 下载次数:次
远程调试的设计与实现*黄瑞芳朱敏张卫民国防科技大学计算机学院( 长沙410073 )E-mail rfhuang@nudt.edu.cn摘要一般情况下调试器与被调试程序(目标程序运行在同一个计算机系统环境中但是在实时系统、内核调试及一些Client/Server系统等情况下调试器不能运行在目标程序运行的环境中此时有效的解决方法就是实施远程调试( Remote debugging 》远程调试系统由本地调试器、远程调试服务器以及远程调试通讯协议组成。该文详细讨论这三部分的设计与实现并介绍一- 个自行设计的基于远程调试的并行调试器。关键词远程调试调试服务器并行调试Design and Realization of Remote DebuggingHuang Ruifang Zhu Min Zhang Weimin( National University of Defense Technology ,Changsha 410073 )Abstract : Remote debugging system ,which consists of native debugger remote debugging server and the communicationprotocol is a good solution to the problem that debugger can not run on the environment such as kermel debugging re-altime system and some client/server system on which debuggee ( target program )loes. This paper focuses on the designand realization of the remote debuging system and introduces a remote -debugging -based parallel debugger developedby us.Keywords : Remote debugging ,Debug server Parallel debugging.引言节介绍远程调试的实现方法第四节讨论远程调试协议;最后调试器是软件开发必不可少的工具。通用计算机无论是描述自行设计的一个基于远程调试的大规模并行调试工具。巨型机、大型机、工作站、还是PC机都配置有适合系统特点的调试工具。如CRAY巨型机的Totalview. SGI工作站.上的2远程调试的Client/Server概念workshop debugger、 IBM SPI 上的xpdbx. PC机Windows上的源级调试器典型的内部功能包括用户界面、符号表处理、codeview等。然而在一些特殊环境下 系统可能不具备支持本目标程序控制。其中用户界面部分处理调试器与目标程序的地调试器运行的能力如:输入/输出以及调试命令语法分析;符号表处理主要进行源级系统不能运行一个本地调试器。如嵌入式系统、实时系和机器级调试功能及数据间的转换,它包括表达式分析、地址统;映射、命令转换等;目标程序控制是在操作系统支持下实施对系统没有运行本地调试器的资源。如缺乏调试需要的内.目标程序的执行控制、地址空间访问、状态监控。需要实施远程存、或不支持多进程使得系统不能在运行- -个本地调试器的同调试的主要原因是目标系统不能完全支持这些功能必须有另时又运行一个目标程序;一个系统即主机系统分担其中-部分功能。因而设计远程调系统不能访问目标程序源文件。如缺乏文件系统;试系统的首要问题是如何在主机与目标机之间分布这些调试系统的屏幕或键盘不能用于调试。如目标程序占用了屏幕和键盘。Client/Server 结构是-般远程调试系统采用的模型CNU另- -方面从计算机系统结构的发展现状看,Client/Server的GDB、CRAY的Totalview以及DEC的Ladebug的远程调试结构已越来越普遍,- 个应用软件通常分布在多个不同的机器系统都是这种模型。上运行,与这种应用相对应的调试也必须向分布式结构发展。2.1远程 调试Client/Server模型要解决调试领域中这种特殊且日趋普遍的情况最有效的解决在Client/Server模型中Client调试器即为本地调试器运方法就是该文讨论的远程调试。行在主机环境下Server 调试器即为调试服务器,与目标程序通常调试器运行的环境’主机"与目标程序运行的环境一起运行在目标环境下。 图1给出了三种典型的Client/Server(目标机" )相同远程调试是指主机和目 标机为物理上分离的模型。中国煤化工系统两个系统之间用网络或-般线性端口连接。远程调试系在配置HCNMH G与同一文件系统连接统由三部分组成主机上的本地调试器,目标机.上的调试服务的同一机器L必疋件仞任1旧过区租上分离的远程调试特器远程调试协议。该文第二节介绍远程调试的一般概念第三例在配置B中主机系统Client软件通过TCP/IP连接远程调"该文的研究工作受国际科大校预研金支持。作者简介黄瑞芳副研究员。朱敏硕士,讲师。二位均从事计算机可视化和并行调试环境的研究与设计。计算机工程与应用2001.1 125试服务器主机和目标系统共享同一文件系统。配置C是最灵试必须实现以下内容:活的结构主机Client与目标Server的连接采用分离的文件系( 1远程调试设置统甚至目标机可以没有文件系统。有两种方式将本地调试器设置成远程调试模式- -种是本地调试器本身提供了自动配置(Configure)机制并为可支持的.Chient.远程目标提供调试服务器及通讯连接实现,如GDB支持i960Server( Nindy ) EB29K、Vx Works 等远程环境;另一种是手工方式设置此时实现者必须实现一整套基于 本地调试器的远程调试配置、基于远程操作系统的远程调试服务器、基于连接环境的通讯协议其中远程调试设置的主要内容就是在本地调试器软件A核心模块和底层模块之间插入转换机制用远程通讯模块置换主机系统目标系统本地底层模块远程通讯模块主要有二部分打包远程命令和Client1 TCP联接 Server解包远程回答。(目标器序)(2 )打包远程命令( putpackage )-个远程调试命令可能需分解为- -个或多个请求包,请求文件彩统文件系统包的个数取决于命令类型以及通讯缓冲区的容量大小同一命令的请求包必须连续发往远程目标发送函数实现依赖与主机主机系航与目标机的链接机制。Clent| TCPP联越(3解包远程回答( gtpackage)接收远程目标的回答包。对应于每--个发往目标的远程调试命令- -定有对应的回答回答包可以不止一个第-个回答B包包含有后续包个数的信息同一命令的多个回答包必须连续送回。若回答包显示的回答表示为约定的错误getpackage 直图1远程调试的 Client/Server模型接报告用户。在Client/Server模型下用户程序驻留在目标系统,由主3.2调试服务 器机系统Client启动与目标硬件、服务器软件的连接。运行在目标机上的调试服务器实现对用户目标程序的低2.2 Client/Server 模型的调试功能分布层监控。需要实施远程调试的目标环境通常只具有很少的支持Client软件分担用户界面和符号处理、Server软件承担目调试的低级功能调试服务器的目的就是如何利用这些极少的标监控是最常见的功能分布方式表1规划了Client/Server模支持取得常规的调试要求。远程调试系统的调试能力取决于目型的一般调试功能分布情况。标环境对调试的支持度。专1 Client/Server模型的调试功能分布调试服务器对运行环境操作系统的基本要求是:能够建立调试服务器与目标程序的关系。本地调试器调试服务器提供检测程序产生异常的手段。运行在主机系统运行在目标系统能够访问目标任务的内存映象。对源文件和符号表的访问及处理监控 目标程序能够访问目标任务的状态及其寄存器。形成发给调试服务器的请求形成发给主机调试器的回答在必要的目标系统支持下根据协议调试服务器实现以利用调试协议发送调试命令给利用调试协议 接收协议命令并下内容:回送响应建立与主机调试器的连接;掌握目标程序进程信息掌握目标进程的环境信息解包主机请求包;打包回答包;3远程 调试实现实施目标程序监控包括:中断处理、步进实现、目标任务.远程调试系统对用户发布的调试请求的处理过程是主机虛存空间访问、寄存器和任务栈的访问。本地调试器通过其界面获取用户请求并对其进行语法分析及中断处理是断点、步进实现的基础。为了检测另-个程序符号处理将用户请求转换为机器级调试命令如果实施的是是否出现中断,调试服务器利用目标操作系统提供的异常检测本地调试,这种机器级调试命令将采用本地操作系统支持实机制使自己成为目标程序的中断处理器。当目标程序产生异现对远程调试来说这种命令必须符合远程调试协议的规定,常时 调试服务器能够捕获中断消息并判断目标程序发生了什形成调试请求包请求包通过通讯线路按协议的规定送往目标么中断进行相应处理。调试服务器处理目标任务正常结束中机。远程目标上的调试服务器接收请求包根据请求类型在目断以及目标中国煤化工系统原始处理。标操作系统的支持下实施对目标进程的执行控制或数据访问,fY HC NMHG处理结果以回答包的形式发往主机。主机接收回答包并解包将回答信息分析处理为源级格式通过调试器界面显示给用户。远程调试协议定义主机调试器与目标调试服务器之间如3.1 本地调试器何协同工作。其主要内容是规定主机与目标之间为实现远程调本地调试器除完成源级调试的核心操作外,针对远程调试进行通讯的条件、通讯的内容及通讯方式。在协议的规定下126 2001.1 计算机工程与应用主机调试器和调试服务器可以用各种形式实现。停止状态描述主机与目标机建立远程调试通讯的前提条件是:S目标任务因断点中断停止主机方面理解约定的协议;-切就绪后,有启动主机与W目标任务正常退出目标机连接的手段调试完毕后,有切断主机与目标机连接、恢目标任务因其他异常中止执行复程序运行的手段。目标机:能够建立调试服务器与目标程序之间的监控关5基于远程调试的并行调试器设计系提供有让一个进程访问另一个进程执行映象的手段。最后描述一个笔者自行设计的、基于远程调试的、针对通讯方式-般采用 包Package )的形式进行同步传输。主MPP体系结构的并行源级调试器Pdebug。 文章主要介绍其远机送往目标机的为请求包,目标送往主机的包为回答包。当主程调试的具体实现。机或目标机任-方发送一个包进行本方的处理后都处于等典型的MPP系统由控制结点和并行处理机阵列组成并待wait接收下一个包的状态。行处理机阵列由多个同构的计算结点组成。控制结点与计算结一个请求包通常应包含的内容有调试请求、参数以及是点通过点对点高速通道进行通讯,计算结点之间采用3维互联否跟有附属包。请求一般 包括有控制进程执行的步进( step和网络连接以IPC机制作为通讯手段。恢复( continue )访问数据的内存读写( get/GET和寄存器读写计算结点由于其处理任务的特殊性,一般只具备支持数学计( memory/MEMORY等等。回答包的内容应包含:目标程序停算的系统环境因而只有很少的调试支持。采用远程调试机制止状态、寄存器状态请求的数据内容以及请求是否正确完成。是解决并行调试器设计中克服计算结点弱调试支持的最有效GDB的请求和回答数据被包裹在-个称为调试包的结构中。方法。其内容描述如下:5.1 Pdebug 总体结构structcommpkt {Pdebug逻辑上由三部分组成主控调试器MDB本地调试char req ;//请求码器GDB调试服务器Server(见图2 ) Server与目标任务- -同运nt len//数据传输长度unsigned char *iocn. addr ; //数据传输 主机缓冲区地址行在计算结点上用户并发进程中的每个进程对应一个本计算结点上的ServerServer负责监控本结点上用户进程的行为,CORE_ ADDR pn_ addr; // 数据传输目标机地址int reg _num ;//读写寄存器号对于每对目标进程和Server ,在控制结点上对应- -个基于 U-unsigned char *reg addr; //主机寄存 器缓冲区地址nix的源级调试器GDB完成源级调试的核心处理。主控制调试nt stop_ status ;//目标程序停止状态器是整个调试系统的主控部分,同时起前端及用户界面作用。char rel_ code ;//回答包状态码表2给出了GDB通讯包协议内容。;控制结点表2 GDB 通讯包L主控明试置MDB请求请求码.包内容描述GDB .....| GDB读寄存器reg adder寄存器目标地址len寄存器的内容长度回答包ret code = Q(ok)第二条返回数据传输寄存器内容开结点汗算结点ret_ code = E(err) 第二条返回数据包含错误信息[ Severl Server写寄存器reg_ _addr 寄存器目标地址(户任务)(用户任务)len 寄存器的内容长度回答包ret_ code=O成功接收.......................ret_ _code=E接收失败图2 Pdebug的总体结构第二条返回数据包含错误信息读内存npr_ addr目标任务内存地址5.2远程 调试实现len数据长从Pdebug的总体结构可以看出,- 条由GDB和Server组iocn. addr :GDB接收数据缓存地址0读成功成的调试线就是-个远程调试系统GDB为本地调试Server第二条返回数据为所读内存的内容是调试服务器。其远程调试的实现利用了GDB的调试目标抽第二条返回数据为错误信息象机制文章首先分析GDB的这一机制然后介绍如何用这一写内存Mpn_ addr :自标任务内存地址机制完成远程调试设置。iocn_ addr :待写数据的GDB缓存地址5.2.1 GDB 对调试目标的抽象-target写成功从静态的角度看CDB可以调试多种可执行文件格式如第二条发送数据为写入数据a.out coff 以及库档案:从动态的角度看.CDB可以调试尚未运写有错行的文件、中国煤化工攻后的内存映象文件。恢复目标任务执行Cpn_ add执行开始地址CDB将它能YHCNMHGargel。步进.pn_ addr执行开始地址GDB定义了4种调试target none core exec child。none对于s. C请求,调试服务器不能立即发送回答包须等到表示当前没有调试对象core表示当前的调试对象为core目标程序执行停止后才能向主机发回答包。此时除ret .codedump文件jexee和child目标涉及可执行文件,分别表示可执外包中还有如下回答信息:行文件在调试过程中的不同阶段,当可执行文件没有运行时,计算机工程与应用2001.1 127就是一个exec目标,一旦发布run" 命令就成为child 目标。5.3远程 调试设置child目标执行终止则可执行文件又成为了exec目标。将它们组合成-个远程调试系统的方法是置GDB为远程.5.2.2调试函数的抽象说明一-arget ops调试模式,即向GDB发布target remote" 命令使得当可执行有了target这种抽象,GDB对各种调试对象的控制就归文件成为child" 目标时GDB选择remote_ _ops" 为当前tar-结为了对target 的控制,为此CDB为target定义了一种对tar-get_.ops。remote.ops中各函数指针指向的函数将遵循远程调试get进行调试控制所需要的调试函数的集合的抽象- -tar-协议将对远程target的控制请求转换成各种调试命令的发送get_ops,target._ops是-个由函数指针组成的结构,其基本元与反馈消息的接收。素有:Struct larget. _ops {6结束语void(* to. resume X );//恢复目标运行文章介绍了远程调试的基本原理、设计方法。已设计的基void(* to _waitXI );//等待目标停止于远程调试的并行调试器Pdebug已经成功地运行在-种MPPvoidK* to. felch. register ); //读目标寄存器巨型机系统上,为该系统的并行应用开发提供了良好的调试手void(* to_ store_ registerX ); //写 寄存器段。(收稿日期2000年1月)in(* to. _xfer. memory)I );//访问内存in(* to. _insert_ breakpointX ); //插入段点参考文献int(* to_ remove_ breakpoint I );//移去段点1.Robert Pizzi.GNU Debugger Internal Archiechre.Department of Ap-void(* to_ creat_ inferior Y );//建立目标进程plied Science University of California Davis Lawrence LivermoreNational Laboratory ,1993.12 ;16:94-006665GDB的调试控制策略是对target的各种调试控制最终将2.Debugging with GDB.Edition 4 GDB Version 4.2.Copyrighl( C )1995转化为对target_ .ops 中函数的引用,即GDB对target 最底层Free Software Foundation ,Inc.1995.1.14的控制都由相应target_ _ops 提供。GDB 提供的target_ _ops有:3.Digital UNIX Ladebug Debugger Manual.Digital Equipment Corpora-core_ops定义了对core目标的低层操作。tion :1996. exec _ops 定义了对exee目标的低层操作。4.Cray TotalView Debugger.Cray Research ,Inc. 1994 ,1995child_ ops :当target 为child 时运行在基于ptrace服务环5.Svenkatesan,Brahma Dathan.Test and Debugging Distributed Progra-境下的调试函数。ms Using Global Predicates.IEEE Transactions on Software Engineer-. procfs. ops: 当target 为child时运行在基于进程文件ing ,1995.2;212):163-177系统环境下的调试函数。6.Mariano G Fernandes Sumit Ghosh.Ddbx- -LPP :A Dynamic SoftwareTool for Debugging Asynchronous Distributed Algorithms on Loosely.remote_.ops进行远程调试时的调试函数。Coupled Parallel Processors.J.System Softw根据系统配置以及用户设置CDB将选择适合当时环境7.High Performance Debugging Forum.HPD Version 1 Standard Com- -的target.ops来完成底层控制。mand Interface for Parallel Debuggers ,1997中国煤化工MYHCNMHG128 2001.1 计算机工程与应用
-
C4烯烃制丙烯催化剂 2020-11-03
-
煤基聚乙醇酸技术进展 2020-11-03
-
生物质能的应用工程 2020-11-03
-
我国甲醇工业现状 2020-11-03
-
JB/T 11699-2013 高处作业吊篮安装、拆卸、使用技术规程 2020-11-03
-
石油化工设备腐蚀与防护参考书十本免费下载,绝版珍藏 2020-11-03
-
四喷嘴水煤浆气化炉工业应用情况简介 2020-11-03
-
Lurgi和ICI低压甲醇合成工艺比较 2020-11-03
-
甲醇制芳烃研究进展 2020-11-03
-
精甲醇及MTO级甲醇精馏工艺技术进展 2020-11-03