[发明专利]进程调试方法及装置有效
| 申请号: | 201010559840.3 | 申请日: | 2010-11-25 |
| 公开(公告)号: | CN102004692A | 公开(公告)日: | 2011-04-06 |
| 发明(设计)人: | 王才才 | 申请(专利权)人: | 中兴通讯股份有限公司 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36 |
| 代理公司: | 北京康信知识产权代理有限责任公司 11240 | 代理人: | 余刚;吴孟秋 |
| 地址: | 518057 广东省深*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 进程 调试 方法 装置 | ||
技术领域
本发明涉及通信领域,具体而言,涉及一种进程调试方法及装置。
背景技术
由于类Unix系统用户态进程地址空间具有相互独立性,shell程序的空间和用户进程的空间是相对隔离的,所以在一个进程运行过程中,我们无法通过shell获取用户进程空间的信息,也难以实现对运行进程的访问和控制,即对进程进行在线调试。
传统的类Unix系统软件开发,在开发初期会使用一些调试工具,对程序设置断点或是让程序单步执行,来跟踪调试程序。待软件开发完成后,一般都会进行优化编译。以release版本发布,在这种情况下,调试工具是没法对软件进行精确调试跟踪的。如果开发者需要抓取系统运行过程中的一些信息,一般只能查看软件在运行过程中的一些状态输出,或者由串口打印,或者由别的信号来表达。而当软件流程出现异常导致系统无法正常工作的时候,故障现场的数据只能靠程序预定的流程来收集。事后,开发者再根据这些数据来定位故障产生的原因。
这种软件架构存在着一些缺陷,首先,系统运行过程中的状态信息由程序主动输出,这个操作会在系统正常工作流程中,若系统比较复杂,信息量大,这部分流程会消耗很多CPU,严重影响系统性能。其次,在发生软件异常时,异常记录信息由软件设计人员预先设定,故障发生后,开发者只能利用仅有的这些数据进行故障分析,如果某些重要信息没有记录下来,那就只能重新制作临时软件版本去收集信息,再复现这个故障。而很多故障往往是不能或者很难复现的,所以这类故障定位的效率会很低或者根本无法定位。
发明内容
针对相关技术中进程调试过程会消耗很多CPU并难以定位故障的问题而提出本发明,为此,本发明的主要目的在于提供一种进程调试方法及装置,以解决上述问题。
为了实现上述目的,根据本发明的一个方面,提供了一种进程调试方法。
根据本发明的进程调试方法包括:代理线程接收到来自用户的调试命令,其中调试命令用于调试待调试的用户进程,代理线程预先设置在待调试的用户进程中;代理线程根据调试命令,调试待调试的用户进程。
进一步地,代理线程接收到来自用户的调试命令包括:与代理线程对应的代理工具接收到来自用户的调试命令,其中代理工具与用户进程分离;代理工具将调试命令转发给代理线程。
进一步地,代理工具使用队列方式或者管道方式将调试命令转发给代理线程。
进一步地,在代理线程接收到来自用户的调试命令之前,上述方法还包括:代理线程创建用户进程的符号表;代理线程在代理线程的私有变量中存储符号表。
进一步地,代理线程根据调试命令,调试待调试的用户进程包括:代理线程分离调试命令,得到调试函数名和参数;代理线程在符号表中查找与调试函数名对应的执行函数;代理线程执行该执行函数。
进一步地,代理线程根据调试命令,调试待调试的用户进程包括:代理线程获取用户进程的状态信息;代理线程向代理工具发送用户进程的状态信息,其中代理工具与用户进程分离。
进一步地,代理线程根据调试命令,调试待调试的用户进程包括以下至少之一:调试命令为Printfifo,代理线程判断代理线程的输出是否已经重定向到管道,如果判断结果为否,则将代理线程的输出重定向到管道,否则忽略调试命令;调试命令为Debug,代理线程判断是否处于调试状态,如果判断结果为否,则代理线程进入调试状态,否则忽略调试命令;调试命令为Quit,代理线程判断代理线程的输出是否已经重定向,如果判断结果为是,则恢复代理线程的输出的重定向,否则忽略调试命令。
为了实现上述目的,根据本发明的另一个方面,提供了一种进程调试装置。
根据本发明的进程调试装置包括:接收模块,用于接收来自用户的调试命令,其中调试命令用于调试待调试的用户进程,接收模块所属的代理线程预先设置在待调试的用户进程中;调试模块,用于根据调试命令,调试待调试的用户进程。
进一步地,进程调试装置还包括:创建模块,用于创建用户进程的符号表;存储模块,用于在代理线程的私有变量中存储符号表。
进一步地,调试模块包括:分离子模块,用于分离调试命令,得到调试函数名和参数;查找子模块,用于在符号表中查找与调试函数名对应的执行函数;执行子模块,用于执行该执行函数。
通过本发明,在用户进程中添加了代理线程,它可以根据用户的调试命令调试用户进程,解决了相关技术中进程调试过程会消耗很多CPU并难以定位故障的问题,从而实现故障的快速、准确地定位,并且,如果没有需要,代理线程是保持阻塞的,所以仅仅会增加代码体积,而不会消耗CPU影响系统性能。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010559840.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:通过式抛丸清理机的室内辊道
- 下一篇:人参皂甙Rg1新用途





