一种软件调试日志输出控制实现方法

文档序号:8430526阅读:229来源:国知局
一种软件调试日志输出控制实现方法【
技术领域
】[0001]本发明涉及计算机软件调试
技术领域
,特别涉及一种软件调试日志输出控制实现方法。【
背景技术
】[0002]近年来,随着计算机技术的不断发展和经济、生活方式的多样化,人们在工作和生活中对计算机应用软件的需求越来越大。随着应用软件的种类越来越多,规模越来越大,为了让计算机更为高效的运作,现在的软件普遍采用了多线程技术。然而,随着软件的规模越来越大,调试的复杂度也越来越高。所以为了便于操作者日后查询、追踪和分析,系统会产生日志log,用以记录每一线程运行的行为及状态。[0003]进行驱动软件开发过程或者软件部署到现场后,不能依赖dbg等调试工具进行软件问题的定位的情况,一般只能依赖日志、统计、警告等信息。传统的软件调试日志都是按照软件模块来记录,并将同一模块或者多个模块的日志记录在同一文件之中。然而,在软件的调试过程中,日志的输出量往往相当庞大而不易阅读。为了了解清楚整个程序的执行步骤,需要打开多个日志文件对比查看,才能了解清楚。不仅工作量大,而且极易出错,一不小心就会错过问题追踪的详细细节,日志分析难度很高。另外,函数级别的调试日志由于信息量巨大,还会造成计算机性能下降,而通常的直接进行函数字符匹配会造成性能下降。[0004]为了解决以上问题,本发明提出了一种软件调试日志输出控制实现方法,为实现函数日志的控制输出,对现场问题的定位提供帮助。[0005]哈希表(Hashtable)也叫散列表,是根据关键码值(Keyvalue)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。[0006]散列函数能使对一个数据序列的访问过程更加迅速有效,通过散列函数,数据元素将被更快地定位。[0007]哈希法的常用方法包括以下几种:(I)直接寻址法:取关键字或关键字的某个线性函数值为散列地址。即H(key)=key或H(key)=a.keyb,其中a和b为常数(这种散列函数叫做自身函数)。若其中H(key)中已经有值了,就往下一个找,直到H(key)中没有值了,就放进去。[0008](2)数字分析法:分析一组数据,比如一组员工的出生年月日,这时我们发现出生年月日的前几位数字大体相同,这样的话,出现冲突的几率就会很大,但是我们发现年月日的后几位表示月份和具体日期的数字差别很大,如果用后面的数字来构成散列地址,则冲突的几率会明显降低。因此数字分析法就是找出数字的规律,尽可能利用这些数据来构造冲突几率较低的散列地址。[0009](3)平方取中法:取关键字平方后的中间几位作为散列地址。[0010](4)折叠法:将关键字分割成位数相同的几部分,最后一部分位数可以不同,然后取这几部分的叠加和(去除进位)作为散列地址。数位叠加可以有移位叠加和间界叠加两种方法。移位叠加是将分割后的每一部分的最低位对齐,然后相加;间界叠加是从一端向另一端沿分割界来回折叠,然后对齐相加。[0011](5)随机数法:选择一随机函数,取关键字的随机值作为散列地址,通常用于关键字长度不同的场合。[0012](6)除留余数法:取关键字被某个不大于散列表表长m的数P除后所得的余数为散列地址。即H(key)=keyMODp,p=m。不仅可以对关键字直接取模,也可在折叠、平方取中等运算之后取模。对P的选择很重要,一般取素数或m,若P选的不好,容易产生同义词。【
发明内容】[0013]本发明为了弥补现有技术的缺陷,提供了一种简单有效的软件调试日志输出控制实现方法。[0014]本发明是通过如下技术方案实现的:一种软件调试日志输出控制实现方法,其特征在于:包括函数日志控制模块和函数日志输出模块两部分,将需要打开日志输出的函数添加到实现日志开关的哈希表中,哈希表以源程序文件名称和函数名称的字符串数值进行哈希计算,并通过哈希数值进行冲突检测;日志输出点按照程序文件名称和函数名称的字符串数值进行哈希搜索,对打开输出控制的函数,进行日志输出。[0015]所述哈希表以源程序文件名称和函数名称的字符串数值进行哈希计算字符串数值计算公式为:α=(α+(c*65535)+(c/65535))*11,其中c为一个字符。[0016]所述哈希散列公式为:Hash=((α*65535)+(α/65535))%n,其中α为字符串数值,η为哈希桶大小。[0017]本发明的有益效果是:该软件调试日志输出控制实现方法,利用源程序文件名称和函数名称的字符串数值进行哈希计算,匹配控制函数日志的输出,能够在驱动开发等高性能要求下有效降低日志控制对性能的损耗。【附图说明】[0018]附图1为本发明函数输出调试日志控制模块示意图。【具体实施方式】[0019]下面结合附图对本发明进行详细说明。[0020]该软件调试日志输出控制实现方法,包括函数日志控制模块和函数日志输出模块两部分,将需要打开日志输出的函数添加到实现日志开关的哈希表中,哈希表以源程序文件名称和函数名称的字符串数值进行哈希计算,并通过哈希数值进行冲突检测;日志输出点按照程序文件名称和函数名称的字符串数值进行哈希搜索,对打开输出控制的函数,进行日志输出。[0021]所述哈希表以源程序文件名称和函数名称的字符串数值进行哈希计算字符串数值计算公式为:α=(α+(c*65535)+(c/65535))*11,其中c为一个字符。[0022]所述哈希散列公式为:Hash=((α*65535)+(α/65535))%n,其中α为字符串数值,η为哈希桶大小。[0023]本发明主要是利用源程序文件名称和函数名称的字符串数值进行哈希散列,并通过哈希查找实现函数日志开关,在较小性能影响下,该方法对按照函数进行日志的控制输出,能够对现场问题的定位提供很大的帮助。【主权项】1.一种软件调试日志输出控制实现方法,其特征在于:包括函数日志控制模块和函数日志输出模块两部分,将需要打开日志输出的函数添加到实现日志开关的哈希表中,哈希表以源程序文件名称和函数名称的字符串数值进行哈希计算,并通过哈希数值进行冲突检测;日志输出点按照程序文件名称和函数名称的字符串数值进行哈希搜索,对打开输出控制的函数,进行日志输出。2.根据权利要求1所述的软件调试日志输出控制实现方法,其特征在于:所述哈希表以源程序文件名称和函数名称的字符串数值进行哈希计算字符串数值计算公式为:α=(α+(c*65535)+(c/65535))*11,其中c为一个字符。3.根据权利要求1所述的软件调试日志输出控制实现方法,其特征在于:所述哈希散列公式为:Hash=((α*65535)+(α/65535))%n,其中α为字符串数值,η为哈希桶大小。【专利摘要】本发明特别涉及一种软件调试日志输出控制实现方法。该软件调试日志输出控制实现方法,包括函数日志控制模块和函数日志输出模块两部分,将需要打开日志输出的函数添加到实现日志开关的哈希表中,哈希表以源程序文件名称和函数名称的字符串数值进行哈希计算,并通过哈希数值进行冲突检测;日志输出点按照程序文件名称和函数名称的字符串数值进行哈希搜索,对打开输出控制的函数,进行日志输出。该软件调试日志输出控制实现方法,利用源程序文件名称和函数名称的字符串数值进行哈希计算,匹配控制函数日志的输出,能够在驱动开发等高性能要求下有效降低日志控制对性能的损耗。【IPC分类】G06F9-44,G06F11-34【公开号】CN104750488【申请号】CN201510135284【发明人】李雪生【申请人】浪潮集团有限公司【公开日】2015年7月1日【申请日】2015年3月26日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1