GNU-Hurd上远程调试实现

GNU/Hurd上远程调试实现摘要:GNU/Hurd是一系列基于GNUMach的守护进程,这一套守护进程最终形成了GNU操作系统。GDB是广泛使用的调试器,适应多个平台和操作系统,但是尚未在GNU/Hurd上实现远程调试。该文详细分析了GNU/Hurd±调试器的实现原理、Mach的异常处理模型,并对GNU/Hurd上的远程调试工具gdbserver的实现进行了介绍。关键词:GNU/Hurd;GDB;远程调试中图分类号:TP311文献标识码:A文章编号:1009-3044(2013)36-8297-03随着嵌入式系统的进一步发展,远程调试的需求也随之而来。虽然主流平台上大多有成熟的远程调试支持,但是GNU/Hurd操作系统上尚缺少可用的远程调试,该文描述了GNU/Hurd上的远程调试的实现。1GNU/Hurd简介GNU/Hurd[1]是GNU计划的重要组成部分,最初打算用来取代Unix的一款微内核操作系统,但是由于历史原因,目前还处于开发阶段,尚无正式发行版,当前最新的稳定版本为HurdO.5,2013年9月27日发布,支持i386平台。GNU/Hurd与传统的宏内核操作系统如linux不同,它是基于GNUMach的微内核操作系统。GNU/Hurd由一些列的协议以及服务进程组成,Mach内核中只负责进程间通信(in-ter-processCommunicationIPC)、最基本的地址空间支持、任务调度,除此之外的所有功能都有用户态的服务程序完成,比如:auth(authenticationserver)服务负责处理密码和程序的权限控制;crash(crashserver)服务负责处理所有的严重错误;exec(executionserver)服务负责加载可执行镜像到内存;fifo(fifoserver)服务负责实现命名管道;pfinet(pfinetserver)服务负责实现PF_INET协议簇;ifsock(serverforsocketsinterface)服务实现了socket接口;init(initializationserver)服务负责系统初始化;proc(processserver)服务负责分配PID和管理进程级操作;term(terminalserver)服务负责实现POSIX终端;null(nullserver)服务实现/dev/null和/dev/zero;文件系统服务包括有ext2fs、isofs、nfs等,分别提供ext2、iso、network文件系统支持。这些服务共同实现了POSIXAPI,举例来说,不同的文件系统服务分别实现了各自的文件系统调用,储存服务实现了wrapping层,类似于linux中的块设备层。而Linux中的VFS则由1让diskfs和libpager库实现。2GNU/Hurd±的调试原理2.1Mach的异常处理模型[2]Linux平台借助信号处理机制来实现程序调试功能,缺省的信号处理动作包括忽略、停止、继续和终止程序,用户可用通过自定义处理函数来替换系统默认提供的信号处理行为。内核提供的ptrace系统调用整合了程序调试所需的一切:子进程数据访问、子进程信号处理、子进程行为控制。与此不同的是,Mach重新设计了一套异常处理模型,该模型可以用来实现信号处理、程序调试等机制。该模型包括以下四个步骤:1)Victim:raise-Victim发出通知消息;2)Victim:wait一Victim挂起自身,直到该异常被处理;3)Handler:catch一Handler收到该通知消息4)Handler:takeaction—Handler通常有两个可能的动作:%clear。清除该通知消息,victim从wait中返回。%terminateo终止victim线程。上述四个步骤可以通过Mach的IPC机制来实现:-raise-sendinitialmessage・一wait-waitforandreceivereplymessage・-catch-receiveinitialmessage・一clear一sendreplymessage・2.2GNU/Hurd±的系统调用[3]GNU/Hurd操作系统是基于Mach微内核实现,其内核并不负责完成系统调用的具体功能,系统调用是通过运行在用户态的各种服务进程来实现,内核只负责进程间消息的传递。以某进程A请求访问Auth服务为例,一次典型的系统调用过程如图1所示:图1GNU/Hurd系统调用示意图1)进程A通过msg_send()原语发送requestmes-sage给Auth服务进程;2)msg_send调用导致陷入内核,内核检查进程A的权限,并验证该requestmessage的合法性,都符合则把该re-questmessage放到Auth服务进程的监听队列中;3)Auth服务进程中的msg_receive调用返回,Auth服务进程处理该requestmessage,Auth服务发送replymes-sage给进程A;4)与之类似,该replymessage由内核转发到进程A的监听队列中,进程A得到反馈信息,本次系统调用结束。2.3与调试相关的系统调用Mach的异常处理模型加上相关的系统调用提...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

笔杆子文秘
机构认证
内容提供者

为您提供优质文档,供您参考!

确认删除?