记录软件调试日志的方法以及装置制造方法

文档序号:6487211阅读:92来源:国知局
记录软件调试日志的方法以及装置制造方法
【专利摘要】本发明公开一种记录软件调试日志的方法及装置,包括步骤:启动至少一个线程,每一线程具有一线程标识符;设置每一线程的线程名,并且建立线程名与线程标识符的对应表;建立多个日志文件,每一线程对应到一个日志文件;取得当前线程标识符,并且通过对应表查找对应当前线程标识符的线程名;将执行所述当前线程产生的日志信息写入所述当前线程对应的日志文件中。由于每一线程都有对应的日志文件名,因此便于通过察看多个日志内容,了解整个程序的执行步骤。此外,即使是多个线程都要使用的模块在执行其中一个线程时出现异常,操作者仍可通过查看多个日志文件,了解是哪一个线程在执行过程中发生错误。
【专利说明】记录软件调试日志的方法以及装置
【技术领域】
[0001]本发明涉及一种用于计算机软件领域,尤指一种记录软件调试日志的方法以及装置。
【背景技术】
[0002]随着计算机技术的快速发展,在人们的生活及工作中通过计算机使用应用软件的需求也越来越大。随着应用软件的规模不断扩大,为了让计算机更有效率的运作,现在的软件普遍采用了多线程技术。然而,软件的规模越大,调试的复杂度也越来越高。所以为了便于操作者日后查询、追踪与分析,系统会产生日志(log)以记录每一线程运行的行为及状态。
[0003]传统的软件调试日志都是按照软件模块来记录,并将同一模块或者多个模块的日志记录在同一文件之中。然而,在软件的调试(debugging)过程中,日志的输出量往往相当庞大而不易阅读,一旦为了了解清楚整个程序的执行步骤,要打开多个日志文件对比查看,才能了解清楚,一不小心会错过问题跟踪的详细细节。而且多线程软件的异常通常都出现在某一线程中,庞大的日志量也不利查找某个功能或者模块的问题。除此之外,因为多个模块的日志记录在同一日志文件之中,对于多个线程都要调用的模块也不易从所述日志文件迅速的判断哪一个模块在执行线程时出现异常。
[0004]故,有必要提供一种记录软件调试日志的方法以及装置,以解决现有技术所存在的问题。

【发明内容】

[0005]本发明的目的是提供一种记录软件调试日志的方法以及装置,可以容易看清楚程序执行的步骤及方便定位软件异常,以解决现有技术的问题。
[0006]为达成本发明的前述目的,本发明提供一种记录软件调试日志的方法,包括下述步骤:执行一调试程序,所述调试程序包含至少一个线程,每一线程具有一线程标识符;设置每一线程的线程名,并且建立每一线程名与每一线程标识符的对应表;建立至少一个日志文件,每一线程对应到一个日志文件;取得当前线程标识符,并且通过所述对应表查找对应所述当前线程标识符的线程名;以及将执行所述当前线程产生的日志信息写入所述当前线程对应的日志文件中。
[0007]依据本发明的一实施例,所述日志信息包括启动线程的时间、使用所述线程的模块名以及函数名。
[0008]依据本发明的一实施例,所述日志信息包括依序记录每一次启动所述线程的时间。
[0009]依据本发明的一实施例,每一日志文件的文件名与对应的线程名相同。
[0010]依据本发明的一实施例,在将执行所述当前线程产生的日志信息写入所述当前线程对应的日志文件中的步骤之后,还包括:当收到一显示日志文件请求时,依据所述显示日志文件请求显示对应的日志文件。
[0011]再者,本发明又提供一种记录软件调试日志的装置,其包括:处理单元,用来执行一调试程序,所述调试程序包括至少一个线程,且每一线程具有一线程标识符;日志建立单元,用来于启动所述至少一个线程时,建立至少一个日志文件,每一线程对应到一个日志文件,且每一线程具有一线程标识符;存储单元,用来存储一对应表,所述对应表用来记录每一线程的线程名与每一线程标识符的对应关系;及日志写入单元,用来取得当前线程标识符,并且通过所述对应表查找对应所述当前线程标识符的线程名,并将执行所述当前线程产生的日志信息写入所述当前线程对应的日志文件。
[0012]依据本发明的一实施例,所述日志信息包括启动线程的时间、使用所述线程的模块名以及函数名。
[0013]依据本发明的一实施例,所述日志信息包括依序记录每一次启动所述线程的时间。
[0014]依据本发明的一实施例,每一日志文件的文件名与对应的线程名相同。
[0015]依据本发明的一实施例,另包含一输出单元,用来于收到一显示日志文件请求时,依据所述显示日志文件请求显示对应的日志文件。
[0016]本发明另提供一种记录软件调试日志的装置,其包括:日志建立模块,用来于启动调试程序的至少一个线程时,建立至少一个日志文件,每一线程对应到一个日志文件且每一线程具有一线程标识符;对应表记录模块,用来建立每一线程名与每一线程标识符的对应表;及日志写入模块,用来取得当前线程标识符,并且通过所述对应表查找对应所述当前线程标识符的线程名,并将执行所述当前线程产生的日志信息写入所述当前线程对应的日志文件。
[0017]依据本发明的一实施例,所述日志信息包括启动线程的时间、使用所述线程的模块名以及函数名。
[0018]依据本发明的一实施例,所述日志信息包括依序记录每一次启动所述线程的时间。
[0019]依据本发明的一实施例,每一日志文件的文件名与对应的线程名相同。
[0020]相较于现有技术,本发明提出了一种按照线程记录软件调试日志的方法及装置,可以实现简单、高效的软件异常定位。由于每一线程启动的时候都会产生对应的日志文件,同时设定日志文件名符合其线程名,因此操作者可以通过日志文件名就立即知道正在查阅的日志是对应到哪一个线程所执行的内容。此外,即使是多个线程都要使用的模块在执行其中一个线程时出现异常,操作者仍可轻易的通过查看多个日志,了解是哪一个线程在执行过程中发生错误。因此本发明解决了传统多线程环境下,按照模块记录的日志不便阅读而无法快速发现哪一个线程出现异常的问题。
[0021]为让本发明的上述内容能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下:
【专利附图】

【附图说明】
[0022]图1是本发明一实施例的记录软件调试日志的装置的方块示意图。
[0023]图2是本发明记录软件调试日志的方法的流程图。[0024]图3是本发明另一实施例的记录软件调试日志的装置的方块示意图。
【具体实施方式】
[0025]请参阅图1,图1是本发明的一实施例的记录软件调试日志的装置10的方块示意图。装置10包含一处理单兀12、一存储单兀14、一输入接口 16、一输出单兀18、日志建立单元20以及日志写入单元22。装置10可以是个人计算机(PC)、笔记型计算机、数字电视、其它可以执行软件程序代码的电子装置,或是内置于个人计算机、笔记型计算机、数字电视等电子装置的硬件电路、软件单元或是软、硬件相结合的单元。
[0026]处理单元12可以是单核、双核或是多核处理器,用来控制装置10的运作,并用来执行软件程序代码,例如调试程序。在本实施例中,调试程序包含至少一个线程,所述调试程序可同时运行多个线程以完成不同的工作。
[0027]存储单元14可以是内存、硬盘或是其它具有存储数据功能的装置以及其组合。输入接口 16是用来接受操作者的指令,而输出单元18则是用来依据操作者的指令输出显示所需要的数据或文件。输入接口 16可以接收装置10本地端的操作者指令,或者接收由远端装置通过有线或无线网络所发送的操作者指令。
[0028]装置10的处理单元12可以用来在接收到操作者通过输入接口 16输入的调试程序执行指令时,开始执行一调试程序。所述调试程序包括至少一个线程,且每一线程具有一线程标识符。
[0029]接下来,日志建立单元20用来于每一个线程被启动的时候,建立至少一个日志文件并将产生的日志文件存储到存储单元14之中。在本实施例中,每一线程对应到一个日志文件,优选的,为便于阅读及分析,每一个日志文件名会与对应的线程的线程名一致。举例来说,如果线程B的线程名是HWDecoder,则对应的日志文件B的日志文件名会被自动设定为HWDecoder.log。当线程A被执行时,日志建立单元20会建立一个与线程A的线程名相同的日志文件A,当线程B被执行时,日志建立单元20会建立一个与线程B的线程名相同的日志文件B。存储单元14还会用来存储一对应表30。本领域技术人员也可以依据本实施例揭示的内容理解到,日志文件名可以按其它适当的命名规则产生,例如有次序的数字编号或文字编号。
[0030]对应表30用来记录每一线程的线程名与每一线程标识符的对应关系。由于每一线程会在不同时间被多次执行,因此每一次线程被执行时,日志写入单元22会用来取得当前被执行线程所对应的线程标识符,并且通过所述对应表30查找对应当前线程标识符的线程名,并将执行所述当前线程产生的日志信息写入已存储于存储单元14中对应于当前线程的日志文件中。日志信息可以包括但不限定于以下内容:每一次启动线程的时间,使用所述线程的模块名以及函数名等。举例来说,线程B在3:00于模块C被第一次执行时,日志建立单元20会根据线程B的线程名HWDecoder,产生日志文件名是HWDecoder.log的日志文件B,同时对应表30记录线程B的线程标识符与日志文件B的对应关系,而建立日志文件的时间、被模块C所执行以及其它相关的日志信息都会写入到日志文件B之中。接着,线程B在5:00于模块D被第二次执行时,日志写入单元22会用来取得线程B所对应的线程标识符,并且通过该线程标识符由对应表30查找出对应线程B的日志文件B,将再次执行的时间、被模块D所执行以及其它相关的日志信息写入到日志文件B。也就是说,不论线程B是否被同一模块所执行,日志文件B会依据每一次线程B被执行的时间,记录每一次线程B执行时的相关日志信息。
[0031]最后,当本地端或远程的操作者通过输入接口 16输入显示日志文件请求时,处理单元12会辨识所述显示日志文件请求的内容,以确认要显示的日志文件,并且将存储单元14所存储的日志文件传送到输出单元18,例如打印机、屏幕等等,使得日志文件可以通过打印机印出,或是显示在屏幕上,以便于操作者查询、追踪、分析软件调试日志的状态。
[0032]请一并参阅图1及图2,图2是本发明记录软件调试日志的方法的流程图。本发明记录软件调试日志的方法包以下步骤:
[0033]步骤202:执行一调试程序,所述调试程序包含至少一个线程,每一线程具有一线程标识符。
[0034]在本步骤中,操作者通过输入接口 16输入执行指令,使得处理单元12开启执行调试程序,其中所述调试程序包含有至少一个线程,每一线程具有一线程标识符。
[0035]步骤204:设置每一线程的线程名,并且建立每一线程名与每一线程标识符的对应表30。
[0036]在本步骤中,存储单元14会存储一对应表30。对应表30是用来记录每一线程的线程名与每一线程标识符的对应关系。
[0037]步骤206:建立至少一个日志文件,每一线程对应到一个日志文件。
[0038]在本步骤中,每当处理单元12启动一个线程时,会一并控制日志建立单元20建立一个日志文件,也就是说,当有多个线程被启动时,会建立多个日志文件,并将所述多个日志文件存储于存储单元14。因此操作者日后可以直接从日志文件名中确认所述日志文件是记录对应线程的运作状态。本领域技术人员也可以依据本实施例揭示的内容理解到,日志文件名可以按其它适当的命名规则产生,例如有次序的数字编号或文字编号。
[0039]步骤208:取得当前线程标识符,并且通过对应表30查找对应所述当前线程标识符的线程名。
[0040]在本步骤之后,每当某一线程被启动时,处理单元12会先取得当前正被启动线程的线程标识符,接着通过对应表30查找当前线程标识符查找对应的线程名。
[0041]步骤210:将执行所述当前线程产生的日志信息写入所述当前线程对应的日志文件中。
[0042]在本步骤中,处理单元12控制日志写入单元22将执行当前线程产生的日志信息写入当前线程对应的日志文件之中。日志信息可以包括但不限定于以下内容:每一次启动线程的时间,使用所述线程的模块名以及函数名等。
[0043]步骤212:当收到一显示日志文件请求时,依据所述显示日志文件请求显示对应的日志文件。
[0044]在上一步骤210之后,当从输入接口 16接收到一显示日志文件请求时,处理单元12会辨识所述显示日志文件请求的内容,以确认要显示的日志文件,并且将存储单元14所存储的日志文件传送到输出单元18,以便于操作者查询、追踪、分析软件调试日志的状态。
[0045]请参阅图3,图3是本发明另一实施例的记录软件调试日志的装置30的方块示意图。在本实施例中,装置30是依据编程过的计算器程序代码运作的电子装置,其包含日志建立模块32、对应表记录模块34和日志写入模块36。日志建立模块32用来于启动调试程序的至少一个线程时,建立至少一个日志文件,每一线程对应到一个日志文件且每一线程具有一线程标识符。对应表记录模块34用来建立每一线程名与每一线程标识符的对应表。日志写入模块36用来取得当前线程标识符,并且通过所述对应表查找对应所述当前线程标识符的线程名,并将执行所述当前线程产生的日志信息写入所述当前线程对应的日志文件。
[0046]本发明按照线程记录软件调试日志的方法及装置,可以实现简单、高效的软件异常定位。由于每一线程启动的时候都会产生对应的日志文件,同时设定日志文件名符合其线程名,因此操作者可以通过日志文件名就立即知道正在查阅的日志是对应到哪一个线程所执行的内容。此外,即使是多个线程都要使用的模块在执行其中一个线程时出现异常,操作者仍可轻易的通过查看多个日志,了解是哪一个线程在执行过程中发生错误。因此本发明解决了传统多线程环境下,按照模块记录的日志不便阅读而无法快速发现哪一个线程出现异常的问题。
[0047]综上所述,虽然本发明已以较佳实施例揭露如上,但上述较佳实施例并非用以限制本发明,本领域的普通技术人员,在不脱离本发明的精神及范围内,均可作各种更动与润饰,因此本发明的保护范围以权利要求界定的范围为准。
【权利要求】
1.一种记录软件调试日志的方法,其特征在于,包括步骤: 执行一调试程序,所述调试程序包含至少一个线程,每一线程具有一线程标识符; 设置每一线程的线程名,并且建立每一线程名与每一线程标识符的对应表; 建立至少一个日志文件,每一线程对应到一个日志文件; 取得当前线程标识符,并且通过所述对应表查找对应所述当前线程标识符的线程名;以及 将执行所述当前线程产生的日志信息写入所述当前线程对应的日志文件中。
2.如权利要求1所述的记录软件调试日志的方法,其特征在于:所述日志信息包括每一次启动所述线程的时间、使用所述线程的模块名以及函数名。
3.如权利要求1或2所述的记录软件调试日志的方法,其特征在于:所述日志信息包括依序记录每一次启动所述线程的时间。
4.如权利要求1所述的记录软件调试日志的方法,其特征在于:每一日志文件的文件名与对应的线程名相同。
5.如权利要求1所述的记录软件调试日志的方法,其特征在于:在将执行所述当前线程产生的日志信息写入所述当前线程对应的日志文件中的步骤之后,还包括:当收到一显示日志文件请求时,依据所述显示日志文件请求显示对应的日志文件。
6.一种记录软件调试日志的装置,其特征在于,包括: 处理单元,用来执行一调试程序,所述调试程序包括至少一个线程,且每一线程具有一线程标识符; 日志建立单元,用来于启动所述至少一个线程时,建立至少一个日志文件,每一线程对应到一个日志文件; 存储单元,用来存储一对应表,所述对应表用来记录每一线程的线程名与每一线程标识符的对应关系;及 日志写入单元,用来取得当前线程标识符,并且通过所述对应表查找对应所述当前线程标识符的线程名,并将执行所述当前线程产生的日志信息写入所述当前线程对应的日志文件。
7.如权利要求6所述的记录软件调试日志的装置,其特征在于:所述日志信息包括启动线程的时间、使用所述线程的模块名以及函数名。
8.如权利要求6或7所述的记录软件调试日志的装置,其特征在于:所述日志信息包括依序记录每一次启动所述线程的时间。
9.如权利要求6所述的记录软件调试日志的装置,其特征在于:每一日志文件的文件名与对应的线程名相同。
10.如权利要求6所述的记录软件调试日志的装置,其特征在于:另包括一输出单元,用来于收到一显示日志文件请求时,依据所述显示日志文件请求显示对应的日志文件。
11.一种记录软件调试日志的装置,其特征在于,包括: 日志建立模块,用来于启动调试程序的至少一个线程时,建立至少一个日志文件,每一线程对应到一个日志文件且每一线程具有一线程标识符; 对应表记录模块,用来建立每一线程名与每一线程标识符的对应表;及 日志写入模块,用来取得当前线程标识符,并且通过所述对应表查找对应所述当前线程标识符的线程名,并将执行所述当前线程产生的日志信息写入所述当前线程对应的日志文件。
12.如权利要求11所述的记录软件调试日志的装置,其特征在于:所述日志信息包括启动线程的时间、使用所述线程的模块名以及函数名。
13.如权利要求11或12所述的记录软件调试日志的装置,其特征在于:所述日志信息包括依序记录每一次启动所述线程的时间。
14.如权利要求11所述的记录软件调试日志的装置,其特征在于:每一日志文件的文件名与对应的线程名相同。
【文档编号】G06F11/36GK103577310SQ201210259391
【公开日】2014年2月12日 申请日期:2012年7月20日 优先权日:2012年7月20日
【发明者】赖晶 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1