一种计算机程序的调试方法技术

技术编号:3854274 阅读:304 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了计算机软件开发技术领域中的一种计算机程序的调试方法。包括:建立一个在被调试的计算机程序所有运行流程中均可使用的记录运行流程信息的全局性数据结构;当程序在源码级调试环境下运行并产生故障终止时,在终止代码附近加入添加流程信息的代码和监控流程信息的代码;当程序再次在故障代码处终止时,在程序故障代码段前的适当位置插入流程追踪代码,使程序在运行流程发生故障前的适当位置暂停,然后采用常用的步进方法向故障代码逐渐靠近,最终确定故障原因并作相应修改;当代码修改后,删去监控流程信息的代码。本发明专利技术能够快速准确的定位故障代码和发生故障时的运行流程,方便地确定程序运行故障的产生原因。

【技术实现步骤摘要】

本专利技术属于计算机软件开发
,尤其涉及一种计算机程序的调试 方法。
技术介绍
程序调试是计算机软件开发的重要环节之一,其目的是发现程序代码中 存在的各种问题,提高程序运行的正确性、安全性、可靠性。传统的程序调试方法采用断点设置与代码跟踪技术,如VC+十、Borland C十+等。对于直接 编译型语言(如C/C++, Java等),编写的是直接执行的程序,由于程序的 执行流程比较单一,这种方法是比较有效的。然而,对于一些执行过程复杂 多变、具有不确定性的程序,同一段代码在不同系统运行条件下可能正常也 可能出现故障,仅仅发现故障代码的位置常常不能准确定位故障产生的原因。 采用代码跟踪的方法既繁琐又费时,特别是当程序在同一段代码上执行了大 量流程后产生故障,断点追踪的方法几乎是无法定位故障的。因此,采用快 速有效的故障定位技术,对于提高复杂过程计算机程序的调试效率和改进代 码质量具有十分重要的意义。
技术实现思路
本专利技术的目的在于,提供,用于解决复杂运行 流程的计算机程序无法快速准确定位故障的问题。本专利技术的技术方案是, ,其特征是所述方法包括下列步骤步骤1:建立在计算机程序所有运行流程中均可使用的记录流程信息的数 据结构;歩骤2:被调试的计算机程序运行,判断是否产生故障,如果是,则记录 故障代码位置并执行步骤3;否则,执行步骤9;步骤3:在故障代码前面,加入用于添加流程信息的代码,通过添加流程 信息的代码,刷新数据结构中记录的流程信息;步骤4:在故障代码处,加入用于监控流程信息的代码,通过监控流程信 息的代码,获取特定的流程信息;步骤5:重新运行被调试的计算机程序,当被调试的计算机程序再次在故 障代码处终止时,获取监控流程信息;步骤6:根据监控流程信息,在故障代码处的前面插入流程信息的追踪代码;歩骤7:再次运行被调试的计算机程序,使被调试的计算机程序在发生故 障时,暂停于故障代码前的追踪代码处;步骤8:从追踪代码开始,采用常用的步进方式,继续执行被调试的计算 机程序,确定故障原因并作相应修改;之后,返回步骤2;步骤9:在修改之后,删除用于监控流程信息的监控代码。所述数据结构为全局性数据结构。所述数据结构独立于所述计算机程序。所述数据结构记录的流程信息包括递规算法的层次计数、条件表达式计 数、任务计数、任务分解方法计数、动作计数、计划计数。所述数据结构记录的流程信息可以根据被调试的计算机程序进行扩展。 所述特定的流程信息根据被调试的计算机程序预先设定。 本专利技术能够快速准确的定位故障代码和发生故障时的运行流程,方便地确定程序运行故障的产生原因,提高代码修改的质量和效率。 附图说明图1是流程信息数据结构与被调试计算机程序的关系图; 图2是流程信息的数据结构示意图; 图3是智能规划软件系统的原理图; 图4是HTN搜索的流程树结构;图5是本专利技术实施例提供的计算机程序的调试方法流程图。 具体实施例方式下面结合附图,对优选实施例作详细说明。应该强调的是,下述说明仅 仅是示例性的,而不是为了限制本专利技术的范围及其应用。木专利技术以层次任务网(Hierarchical Task Network,简称HTN)智能规划器程序的调试为实施例对本专利技术作进-'歩说明。智能规划问题(Artificial Intelligent planning)是人工智能研究的重要问题 之一(参考文献宋经#7, J^達^, /转一乎,^^,^^^fi 综述一一个源^7应 y^游裸身,,H賓一统,^见^^7, 2 O),其目的是根据给定的初始世界状 态(initial world state)和给定的目标状态(goal state)或目标任务(goal task), 根据预先定义的动作集合求取实现目标的动作序列,这个求得的动作序列就形 成一个计划(plan)。 HTN规划是一种面向工程应用提出的实用智能规划技术, 通过任务的逐层分解实现计划的生成,能够极大地改善规划器求解性能。HTN 智能规划算法的程序编写和执行与传统的程序编写的一个重要不同是传统的 编程方法编写的程序其执行的流程是预先设计好的,流程分支的数量不太多、 容易预见,传统的断点追踪技术比较容易控制。而HTN规划算法在运行时受 规划域(即一种驱动模型)中不确定的任务分解方法(method)和问题实例(problem instance)的影响,求解流程存在许多不确定的分支,尤其是当问题规模比较大时,求解流程分支的不确定性变化数量非常庞大。当算法执行出现异常时,用传统的设置断点和跟踪代码执行情况的调试方法判断故障原因是十分困难的。采用本专利技术提出的调试方法能有效地进行这类系统的开发调试。图1是流程信息数据结构与被调试计算机程序的关系图。记录运行流程信息的数据结构独立于被调试计算机程序单独构建。该数据结构通过在被调 试的计算机程序中加入的用于添加流程信息的代码段不断刷新,记录流程的相关信息。流程信息监控代码段则获取特定的流程信息,为流程的追踪提供 断点信息。所述特定的流程信息根据被调试的计算机程序预先设定。图2是流程信息的数据结构示意图。图2中,记录流程信息的数据结构 包括与流程相关的记录信息项,如递规算法的层次计数、条件表达式计数、 任务计数、任务分解方法计数、动作计数、计划计数等。所述数据结构记录 的复杂流程信息可以根据被调试的计算机程序的不同,对记录信息项进行修 改和扩充。图3是智能规划软件系统的原理图。图3中,通用型HTN规划系统的 基本结构包括由某种智能规划语言形成的规划域和规划问题的文本文件、世 界状态描述、HTN规划器、计划。规划域和规划问题的文本文件包括初始世 界状态的描述、规划域描述、规划目标任务描述。规划域包括操作(operator)、 任务分解方法(method)、公理(axiom)等规划域知识的描述。HTN规划系 统从文本文件的初始世界状态中装入世界状态描述,规划器从文本文件中装 入规划域和目标仟务描述。经过顺序任务分解算法的递规处理,世界状态被 不断刷新,最终生成的动作序列从规划器输出形成计划。规划域模型和问题 实例采用SHOP2语言建立(参见文献A^w/)., "a/, Z^ cwwe"to"o"/w 57/(9户2, /2"戸.'〃sowre/wge.""/; ra/ecto/^o; )。通用型HTN规划系统通过装入规划与 模型和问题实例形成针对某一应用的专用型规划系统。顺序任务分解算法是近年来提出的高效、通用型HTN规划算法(参见文 献A^flM D., v4m L * //77V尸/a朋z'"gJ"cwma/ 。/爿Wzy c/a//"te〃&e"ce/ ew"rc/z, 20(200",/ p,379-4似),该算》去是一个递规算法。由于装 入的SHOP2域模型的不同以及同一域模型针对的问题实例的不同,顺序任 务分解算法中同一段代码的执行流程存在极大的不确定性。图4是HTN搜索的流程树结构。图4中,顺序任务分解的程序执行流程可 以描述为自左向右、自上向下的树形遍历过程。不同的初始世界状态、不同的 规划域和不同的目标任务将产生不同的流程树。故障的产生位置也因问题实例 的不同而发生变化。在。++语言中,记录复杂流程信息的数据结构以"类"形式定义为CPR本文档来自技高网...

【技术保护点】
一种计算机程序的调试方法,其特征是所述方法包括下列步骤: 步骤1:建立在计算机程序所有运行流程中均可使用的记录流程信息的数据结构; 步骤2:被调试的计算机程序运行,判断是否产生故障,如果是,则记录故障代码位置并执行步骤3;否则,执行步骤 9; 步骤3:在故障代码前面,加入用于添加流程信息的代码,通过添加流程信息的代码,刷新数据结构中记录的流程信息; 步骤4:在故障代码处,加入用于监控流程信息的代码,通过监控流程信息的代码,获取特定的流程信息; 步骤5:重新运行被调试的 计算机程序,当被调试的计算机程序再次在故障代码处终止时,获取监控流程信息; 步骤6:根据监控流程信息,在故障代码处的前面插入流程信息的追踪代码; 步骤7:再次运行被调试的计算机程序,使被调试的计算机程序在发生故障时,暂停于故障代码前的追 踪代码处; 步骤8:从追踪代码处开始,采用常用的步进方式,继续执行被调试的计算机程序,确定故障原因并作相应修改;之后,返回步骤2; 步骤9:在修改之后,删除用于监控流程信息的监控代码。

【技术特征摘要】

【专利技术属性】
技术研发人员:宋泾舸
申请(专利权)人:北京交通大学
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1