CN104750488A - 一种软件调试日志输出控制实现方法 - Google Patents
一种软件调试日志输出控制实现方法 Download PDFInfo
- Publication number
- CN104750488A CN104750488A CN201510135284.XA CN201510135284A CN104750488A CN 104750488 A CN104750488 A CN 104750488A CN 201510135284 A CN201510135284 A CN 201510135284A CN 104750488 A CN104750488 A CN 104750488A
- Authority
- CN
- China
- Prior art keywords
- hash
- function
- daily record
- character string
- log
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 27
- 238000004364 calculation method Methods 0.000 claims abstract description 9
- 238000001514 detection method Methods 0.000 claims abstract description 4
- 230000007423 decrease Effects 0.000 description 2
- 238000010252 digital analysis Methods 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 239000002253 acid Substances 0.000 description 1
- 150000007513 acids Chemical class 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明特别涉及一种软件调试日志输出控制实现方法。该软件调试日志输出控制实现方法,包括函数日志控制模块和函数日志输出模块两部分,将需要打开日志输出的函数添加到实现日志开关的哈希表中,哈希表以源程序文件名称和函数名称的字符串数值进行哈希计算,并通过哈希数值进行冲突检测;日志输出点按照程序文件名称和函数名称的字符串数值进行哈希搜索,对打开输出控制的函数,进行日志输出。该软件调试日志输出控制实现方法,利用源程序文件名称和函数名称的字符串数值进行哈希计算,匹配控制函数日志的输出,能够在驱动开发等高性能要求下有效降低日志控制对性能的损耗。
Description
技术领域
本发明涉及计算机软件调试技术领域,特别涉及一种软件调试日志输出控制实现方法。
背景技术
近年来,随着计算机技术的不断发展和经济、生活方式的多样化,人们在工作和生活中对计算机应用软件的需求越来越大。随着应用软件的种类越来越多,规模越来越大,为了让计算机更为高效的运作,现在的软件普遍采用了多线程技术。然而,随着软件的规模越来越大,调试的复杂度也越来越高。所以为了便于操作者日后查询、追踪和分析,***会产生日志log,用以记录每一线程运行的行为及状态。
进行驱动软件开发过程或者软件部署到现场后,不能依赖dbg等调试工具进行软件问题的定位的情况,一般只能依赖日志、统计、警告等信息。传统的软件调试日志都是按照软件模块来记录,并将同一模块或者多个模块的日志记录在同一文件之中。然而,在软件的调试过程中,日志的输出量往往相当庞大而不易阅读。为了了解清楚整个程序的执行步骤,需要打开多个日志文件对比查看,才能了解清楚。不仅工作量大,而且极易出错,一不小心就会错过问题追踪的详细细节,日志分析难度很高。另外,函数级别的调试日志由于信息量巨大,还会造成计算机性能下降,而通常的直接进行函数字符匹配会造成性能下降。
为了解决以上问题,本发明提出了一种软件调试日志输出控制实现方法,为实现函数日志的控制输出,对现场问题的定位提供帮助。
哈希表(Hash table)也叫散列表,是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。
散列函数能使对一个数据序列的访问过程更加迅速有效,通过散列函数,数据元素将被更快地定位。
哈希法的常用方法包括以下几种:
(1)直接寻址法:取关键字或关键字的某个线性函数值为散列地址。即H(key)=key或H(key) = a·key b,其中a和b为常数(这种散列函数叫做自身函数)。若其中H(key)中已经有值了,就往下一个找,直到H(key)中没有值了,就放进去。
(2)数字分析法:分析一组数据,比如一组员工的出生年月日,这时我们发现出生年月日的前几位数字大体相同,这样的话,出现冲突的几率就会很大,但是我们发现年月日的后几位表示月份和具体日期的数字差别很大,如果用后面的数字来构成散列地址,则冲突的几率会明显降低。因此数字分析法就是找出数字的规律,尽可能利用这些数据来构造冲突几率较低的散列地址。
(3)平方取中法:取关键字平方后的中间几位作为散列地址。
(4)折叠法:将关键字分割成位数相同的几部分,最后一部分位数可以不同,然后取这几部分的叠加和(去除进位)作为散列地址。数位叠加可以有移位叠加和间界叠加两种方法。移位叠加是将分割后的每一部分的最低位对齐,然后相加;间界叠加是从一端向另一端沿分割界来回折叠,然后对齐相加。
(5)随机数法:选择一随机函数,取关键字的随机值作为散列地址,通常用于关键字长度不同的场合。
(6)除留余数法:取关键字被某个不大于散列表表长m的数p除后所得的余数为散列地址。即 H(key) = key MOD p,p=m。不仅可以对关键字直接取模,也可在折叠、平方取中等运算之后取模。对p的选择很重要,一般取素数或m,若p选的不好,容易产生同义词。
发明内容
本发明为了弥补现有技术的缺陷,提供了一种简单有效的软件调试日志输出控制实现方法。
本发明是通过如下技术方案实现的:
一种软件调试日志输出控制实现方法,其特征在于:包括函数日志控制模块和函数日志输出模块两部分,将需要打开日志输出的函数添加到实现日志开关的哈希表中,哈希表以源程序文件名称和函数名称的字符串数值进行哈希计算,并通过哈希数值进行冲突检测;日志输出点按照程序文件名称和函数名称的字符串数值进行哈希搜索,对打开输出控制的函数,进行日志输出。
所述哈希表以源程序文件名称和函数名称的字符串数值进行哈希计算字符串数值计算公式为:α=(α+(c*65535)+(c/65535))*11,其中c为一个字符。
所述哈希散列公式为:Hash =((α*65535)+(α/65535))%n,其中α为字符串数值,n为哈希桶大小。
本发明的有益效果是:该软件调试日志输出控制实现方法,利用源程序文件名称和函数名称的字符串数值进行哈希计算,匹配控制函数日志的输出,能够在驱动开发等高性能要求下有效降低日志控制对性能的损耗。
附图说明
附图1为本发明函数输出调试日志控制模块示意图。
具体实施方式
下面结合附图对本发明进行详细说明。
该软件调试日志输出控制实现方法,包括函数日志控制模块和函数日志输出模块两部分,将需要打开日志输出的函数添加到实现日志开关的哈希表中,哈希表以源程序文件名称和函数名称的字符串数值进行哈希计算,并通过哈希数值进行冲突检测;日志输出点按照程序文件名称和函数名称的字符串数值进行哈希搜索,对打开输出控制的函数,进行日志输出。
所述哈希表以源程序文件名称和函数名称的字符串数值进行哈希计算字符串数值计算公式为:α=(α+(c*65535)+(c/65535))*11,其中c为一个字符。
所述哈希散列公式为:Hash =((α*65535)+(α/65535))%n,其中α为字符串数值,n为哈希桶大小。
本发明主要是利用源程序文件名称和函数名称的字符串数值进行哈希散列,并通过哈希查找实现函数日志开关,在较小性能影响下,该方法对按照函数进行日志的控制输出,能够对现场问题的定位提供很大的帮助。
Claims (3)
1.一种软件调试日志输出控制实现方法,其特征在于:包括函数日志控制模块和函数日志输出模块两部分,将需要打开日志输出的函数添加到实现日志开关的哈希表中,哈希表以源程序文件名称和函数名称的字符串数值进行哈希计算,并通过哈希数值进行冲突检测;日志输出点按照程序文件名称和函数名称的字符串数值进行哈希搜索,对打开输出控制的函数,进行日志输出。
2.根据权利要求1所述的软件调试日志输出控制实现方法,其特征在于:所述哈希表以源程序文件名称和函数名称的字符串数值进行哈希计算字符串数值计算公式为:α=(α+(c*65535)+(c/65535))*11,其中c为一个字符。
3.根据权利要求1所述的软件调试日志输出控制实现方法,其特征在于:所述哈希散列公式为:Hash =((α*65535)+(α/65535))%n,其中α为字符串数值,n为哈希桶大小。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510135284.XA CN104750488B (zh) | 2015-03-26 | 2015-03-26 | 一种软件调试日志输出控制实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510135284.XA CN104750488B (zh) | 2015-03-26 | 2015-03-26 | 一种软件调试日志输出控制实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104750488A true CN104750488A (zh) | 2015-07-01 |
CN104750488B CN104750488B (zh) | 2018-07-31 |
Family
ID=53590243
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510135284.XA Active CN104750488B (zh) | 2015-03-26 | 2015-03-26 | 一种软件调试日志输出控制实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104750488B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105930256A (zh) * | 2016-04-14 | 2016-09-07 | 北京思特奇信息技术股份有限公司 | 一种利用log4j分文件的日志输出方法和装置 |
CN108594690A (zh) * | 2018-07-25 | 2018-09-28 | 江苏精微特电子股份有限公司 | 一种微压力传感器在按键控制领域的应用结构 |
CN111159128A (zh) * | 2019-12-30 | 2020-05-15 | 浪潮电子信息产业股份有限公司 | 一种日志输出方法、装置和计算机可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060294434A1 (en) * | 2005-06-28 | 2006-12-28 | Fujitsu Limited | Test recording method and device, and computer-readable recording medium storing test recording program |
CN101697520A (zh) * | 2009-11-12 | 2010-04-21 | 杭州华三通信技术有限公司 | 一种***日志的处理方法和装置 |
CN103731355A (zh) * | 2013-12-31 | 2014-04-16 | 迈普通信技术股份有限公司 | 避免mac地址学习时哈希冲突的方法及*** |
-
2015
- 2015-03-26 CN CN201510135284.XA patent/CN104750488B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060294434A1 (en) * | 2005-06-28 | 2006-12-28 | Fujitsu Limited | Test recording method and device, and computer-readable recording medium storing test recording program |
CN101697520A (zh) * | 2009-11-12 | 2010-04-21 | 杭州华三通信技术有限公司 | 一种***日志的处理方法和装置 |
CN103731355A (zh) * | 2013-12-31 | 2014-04-16 | 迈普通信技术股份有限公司 | 避免mac地址学习时哈希冲突的方法及*** |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105930256A (zh) * | 2016-04-14 | 2016-09-07 | 北京思特奇信息技术股份有限公司 | 一种利用log4j分文件的日志输出方法和装置 |
CN105930256B (zh) * | 2016-04-14 | 2018-07-17 | 北京思特奇信息技术股份有限公司 | 一种利用log4j分文件的日志输出方法和装置 |
CN108594690A (zh) * | 2018-07-25 | 2018-09-28 | 江苏精微特电子股份有限公司 | 一种微压力传感器在按键控制领域的应用结构 |
CN111159128A (zh) * | 2019-12-30 | 2020-05-15 | 浪潮电子信息产业股份有限公司 | 一种日志输出方法、装置和计算机可读存储介质 |
CN111159128B (zh) * | 2019-12-30 | 2022-04-22 | 浪潮电子信息产业股份有限公司 | 一种日志输出方法、装置和计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104750488B (zh) | 2018-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104504105B (zh) | 一种实时数据库的存储方法 | |
CN102629258B (zh) | 重复数据删除方法和装置 | |
US10002142B2 (en) | Method and apparatus for generating schema of non-relational database | |
CN103593352A (zh) | 一种海量数据清洗方法及装置 | |
WO2016010570A1 (en) | Partial snapshot creation | |
CN103729303A (zh) | 一种Flash的数据写入和读取方法 | |
CN103914483B (zh) | 文件存储方法、装置及文件读取方法、装置 | |
CN104636401B (zh) | 一种scada***数据回滚的方法及装置 | |
CN101770422A (zh) | 软件Bug追踪方法及其计算机*** | |
CN104750488A (zh) | 一种软件调试日志输出控制实现方法 | |
CN104834648A (zh) | 日志查询方法和装置 | |
CN106909554A (zh) | 一种数据库文本表数据的加载方法及装置 | |
CN112084070B (zh) | L2p映射数据恢复方法、装置、存储介质及电子设备 | |
CN102567415A (zh) | 一种数据库的控制方法和装置 | |
CN110515844B (zh) | 一种从JIRA提取bug信息生成多维分析报表的方法 | |
CN114020525B (zh) | 故障隔离方法、装置、设备及存储介质 | |
CN105068941A (zh) | 一种缓存页面替换方法及装置 | |
CN104216833A (zh) | 一种确定物理地址的方法及装置 | |
CN109918074B (zh) | 编译链接优化方法 | |
CN101290621B (zh) | 安全数字卡的存储检索方法 | |
CN105786478A (zh) | 用于数据处理的方法及设备 | |
CN104239236A (zh) | 旁路转换缓冲缺失的处理方法及旁路转换缓冲 | |
US20150006578A1 (en) | Dynamic search system | |
US20220300513A1 (en) | Asynchronous query optimization using spare hosts | |
CN115114297A (zh) | 数据轻量存储及查找方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230328 Address after: 250000 building S02, No. 1036, Langchao Road, high tech Zone, Jinan City, Shandong Province Patentee after: Shandong Inspur Scientific Research Institute Co.,Ltd. Address before: No. 1036, Shandong high tech Zone wave road, Ji'nan, Shandong Patentee before: INSPUR GROUP Co.,Ltd. |