[发明专利]多线程调试方法和装置有效
| 申请号: | 200810161283.2 | 申请日: | 2008-09-24 |
| 公开(公告)号: | CN101685420A | 公开(公告)日: | 2010-03-31 |
| 发明(设计)人: | 崔云峰;李翌;程圣宇 | 申请(专利权)人: | 中兴通讯股份有限公司 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F9/48 |
| 代理公司: | 北京康信知识产权代理有限责任公司 | 代理人: | 尚志峰;吴孟秋 |
| 地址: | 518057广东*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 多线程 调试 方法 装置 | ||
技术领域
本发明涉及通信领域,并且特别地,涉及一种多线程调试方法 和装置。
背景技术
随着信息技术的不断发展、软件规模的不断扩大以及复杂度的 不断提高,一个功能往往需要由多个线程协同完成。在实际应用当 中,如何能够有效地帮助软件开发人员快速定位并消除代码中的故 障,成为调试器的重要问题。
目前,调试器提供了断点功能、程序运行流程控制功能、数据 查看功能、以及堆栈分析功能等等,通过这些功能可以有效地帮助 软件开发人员快速定位并消除代码中的故障,这些功能的操作对象 基本都是单个被调试线程或整个进程。
其中,断点功能是开发人员调试的基本手段,按照实现方式可 分为软件断点和硬件断点。其中,软件断点是指:通过在程序的代 码中插入断点指令实现,当被调试程序执行到此断点指令后即停止, 用户可以通过调试器查看当前的变量、寄存器、调用堆栈等等;硬 件断点是指:通过设置硬件调试寄存器,实现监控被调试程序读, 写或执行操作。其中,当被调试程序读,写或执行了被观测地址后 被调试程序立即停止,此时也可以查看被调试程序的详细信息。
通过断点功能可以非常灵活有效地设置调试触发点,停止并观 察触发此调试事件的任务。目前,大多数的调试器还可以在断点上 设置一些属性,例如,设置局部断点、全局断点、临时断点、条件 断点、忽略次数断点等。具体而言,局部断点是指当前断点只对某 个特定的线程有效;全局断点则对当前调试的所有线程有效;临时 断点则是遇到一次后就自动删除的断点;条件断点是遇到此断点且 满足预设的条件才能停止的断点;忽略次数断点是遇到此断点超过 预设的忽略次数后才能停止的断点,并且,用户可以通过调试器组 合上面一个或多个断点属性进行调试。
在复杂的大型软件中,各种功能大多是由多个线程协同完成的, 一些线程可以协同完成某一功能,而另一些线程协同完成另一些功 能,这些功能之间也存在某种因果关系或依赖关系。在调试其中一 个功能时需要保证此功能所依赖的其他功能保持正常运行状态,否 则就会影响当前功能的调试。
对于这种复杂功能软件,如果仍采用普通的断点及断点属性组 合的方式调试,则很难满足调试要求。因为普通的调试器所针对的 被调试对象是单个线程或者整个进程,在遇到调试事件时都是当前 线程或者整个进程停止。如果整个进程都被停止的情况下,被调试 功能所依赖的运行环境(由当前进程中其他线程组提供)就被破坏 了,导致当前调试组的功能逻辑可能就受影响;另一方面,如果只 有当前线程被停止的情况下,调试器只能获取到这个停止的线程信 息,而无法获取实现当前调试功能的所有线程的完整信息,因此不 能正确分析当前功能,并且只停止此功能关联的一个线程也可能破 坏了整个功能逻辑。
综上所述,目前调试器的调试对象都是单个线程或者整个进程, 但是调试需求却是某一个功能,而且此功能由多个线程协同完成, 这样就会因为在调试过程中某个线程或整个进程的停止而导致调试 结果不准确的问题。
发明内容
考虑到相关技术中由于调试过程中某个线程或整个进程的停止 而导致调试结果不准确的问题而做出本发明,为此,本发明的主要 目的在于提供一种多线程调试机制,以解决上述问题。
根据本发明的一个方面,提供了一种多线程调试方法。
根据本发明的多线程调试方法包括:在预确定的调试功能点包 含多个线程的情况下,将多个线程组成调试任务组,并确定调试触 发事件;在调试触发事件发生的情况下,停止调试任务组中的多个 线程并在调试功能点进行调试。
其中,将多个线程组成调试任务组的处理可以进一步包括:记 录调试任务组的任务组号、和/或记录调试任务组中每个线程的标 识。
此外,将多个线程组成调试任务组的处理进一步包括:根据调 试功能点的结构确定调试功能点的断点。
此时,停止调试任务组中的多个线程的处理具体为以下之一:
在断点为任务组类型的断点的情况下,根据断点的属性以及调 试任务组中每个线程的标识与当前运行的线程的标识确定是否需要 停止调试任务组的多个线程;
在断点为非任务组类型的断点的情况下,根据断点的属性确定 是否需要停止调试任务组的多个线程。
此外,在调试功能点进行调试的处理具体为:获取调试功能点 中全部任务的信息,并根据信息对调试功能点的运行状态进行分析。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810161283.2/2.html,转载请声明来源钻瓜专利网。





