一种基于日志的软件调试方法技术

技术编号:32473713 阅读:34 留言:0更新日期:2022-03-02 09:35
本发明专利技术公开了一种基于日志的软件调试方法,通过把软件调试过程中要查看的变量打印到日志文件,然后再利用外部软件工具将日志文件输出成图形化界面的变量的“数值——时间”变化波形图的方法来方便程序员进行软件调试。本发明专利技术提供的方法相比GDB和类似printf的打印,具有使用简单,显示直观的优点。程序员只需使用dumpfile函数打开日志文件,在需要记录的地方使用dump函数记录一些变量的变化数值,然后使用dumpon和dumpoff灵活控制记录即可。同时能将变量的变化显示到变量数值随时间变化的图形化波形图中,便于程序员查看各个变量的数值变化,以及各个变量之间数值变化的先后影响关系。关系。关系。

【技术实现步骤摘要】
一种基于日志的软件调试方法


[0001]本专利技术涉及软件调试
,更具体地说是一种基于日志的软件调试方法。

技术介绍

[0002]传统的软件调试方法主要有使用打印函数——例如printf——打印运行过程中各个变量的数值,使用GDB调试等方法。使用打印函数的方法的缺点是每次都要在相应位置编写相应的打印函数语句,调试完后还要删除。使用GDB调试虽然能不断跟踪软件程序的执行过程,但是当遇到程序量很大,大量循环,多线程调试,多核程序甚至众核程序调试时会比较麻烦。尤其是在片上多核及众核的情况下的调试,使用GDB调试时要协调统一控制各个处理器上的程序,实现并不容易。

技术实现思路

[0003]为了克服现有技术的上述缺陷,本专利技术提供一种新的软件调试方法,通过记录要跟踪的变量的数值变化,生成日志文件或图形化变量变化及顺序界面来供错误定位。而且这种方法不仅适合单处理器上的程序调试,也适用于多核和众核上并行程序的调试。
[0004]为实现上述目的,本专利技术提供如下技术方案:
[0005]一种基于日志的软件调试方法,包括以本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于日志的软件调试方法,其特征在于:包括以下步骤:第1步:用户通过包含dump.h头文件的方式,在需要打印日志的地方包含以下定义的函数:Dump.h中至少增加以下4个用户可见的函数来辅助实现调试功能:函数dumpfile();函数dumpoff();函数dumpon();函数dump();在dump.c中有这些函数的定义和实现;另外还有4个全局变量的定义:全局变量dumpen,类型为char;当dumpen=1时将会把指定的变量的数值记录到日志当中;当dumpen=0时不会把各变量的数值记录到日志当中;全局变量dumpfilename,类型为char指针,存储日志文件名;全局变量dumpfilehd,类型为FILE指针,是打开的日志文件的句柄;全局变量dump_time,类型为unsigned int,用于标记每个变量的记录序号;这里用序号来表明各个变量的数值改变的先后顺序,即序号就是变量变化的时间;Dumpfile函数用于指定要打开的日志文件名,并以只写的方式打开文件,准备开始记录;如果文件无法打开,则报错退出程序;Dumpfile至少要有1个参数,即日志文件名;其原型为dumpfile(char*filename);Dumpon函数用于启动日志记录;此函数的功能比较简单,就是设置dumpen为1;Dumpoff函数用于关闭日志记录;此函数的功能比较简单,就是设置dumpen为0;Dump函数是1个可变参数函数;第1个参数是格式化定位字符串,从第2个参数开始就是要记录的参数列表;格式化定位字符串的格式是固定的,是“变量标识字符串=%格式化字符”,如果要同时记录多个变量的数值,每个变量的格式化定位字符串之间用逗号“,”分隔,即“变量标识字符串=%格式化字符,变量标识字符串=%格式化字符,变量标识字符串=%格式化字符,
……”
;Dump的函数调用形式例如:dump(“a=%d”,a);或者dump(“a=%d,b=%d,c=%u”,a,b,c);格式化字符和c语言的printf相同;第2步:指定日志文件路径和文件名并调用dumpfile函数打开日志文件;例如如果指定日志文件名为“./log”,那么需要在main函数中,在所有的日志打印开始前,调用dumpfile函数:dumpfile(”./log”);;第3步:使用dumpon函数开启日志打印;第4步:在需要记录变量数值的位置插入dump函数;第5步:编译并运行程序,生成日志文件./log;第6步:将日志文件中记录的变量随时间的数值变化用图形化界面软件工具显示出来供用户查看;这一步有2种方法,第1种方法是编写1个软件程序读取生成的日志文件,然后显示成图形化界面;第2种方法是编写1个软件转换工具程序或脚本,将日志文件转换成某一种现成的图形化界面工具支持的文件格式。
2.根据权利要求1所述的一种基于日志的软件调试方法,其特征在于:所述第2步中:如果指定日志文件名为“./log”,那么需要在main函数中,在所有的日志打印开始前,调用dumpfile函数:dumpfile(”./log”);。3.根据权利要求1所述的一种基于日志的软件调试方法,其特征在于:所述第4步中,定义某一位置要记录变量a,b两个变量的数值:dump(“a=%d,b=%d”,a,b);另一位置要记录变量b,c,d三个变量的数值:dump(“b=%d,c=%d,d=%u”,b,c,d);如果程序中某一段时间不需要记录变量的变化数值,可以使用dumpoff函数关闭日志记录;关闭后在需要开始记录的地方仍然可以使用dumpon函数重新打开日志记录功能继续记录。4.根据权利要求1所述的一种基于日志的软件调试方法,其特征在于:所述第6步中,软件转换工具的实现方法为:第1步:建立符号数组和查询函数可以将日志文件转换为verilog的vcd文件,然后借助于verilog vcd文件的图形化波形查看软件来查看波形;在vcd文件中,每个变量都用1个唯一的符号来表示;所以后续要建立变量与符号的一一对应关系;当前第1步是提供1个符号查询函数以供后续使用;本步骤中,建立1个具有16个元素,每个元素是单个的ASCII字符的数组logo;数...

【专利技术属性】
技术研发人员:施左桥徐培欣
申请(专利权)人:苏州央议信息科技有限公司
类型:发明
国别省市:

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

1