一种调试日志生成方法及装置的制作方法

文档序号:6584812阅读:195来源:国知局
专利名称:一种调试日志生成方法及装置的制作方法
技术领域
本发明涉及计算机日志处理的技术领域,特别是涉及一种调试日志生成方法及一 种调试日志生成装置。
背景技术
日志(log)通常用来储存和记录系统的运行情况和调试信息,这些信息是查看系 统运行状态和排查问题的主要依据。例如,字幕制作系统中应用程序出现崩溃情况,那么就 可以从应用程序事件日志中找到相应的记录,从而帮助相关技术人员分析并解决问题。现有技术中,日志通常只能在Debug版本(调试程序阶段使用的版本)下进行展 示,而在Release版本(发布程序使用的版本)下,则没有相关的调试信息。而在实际的开 发调试过程中,经常会遇到在Debug版本下没有问题的源程序,在Release版本下却发生致 命的错误的情况,甚至导致系统崩溃。因此,开发出一种既在Debug版本下也能在Release版本下查看日志的方法,成为 本领域技术人员迫切需要解决的技术问题。

发明内容
本发明所要解决的技术问题是提供一种调试日志生成方法及装置,用以在Debug 版本和Release版本下能查看日志,简化程序开发人员的操作。为了解决上述技术问题,本发明实施例公开了一种调试日志生成方法,包括创建日志文件;在Debug或Release版本下,若运行到预定义的调试信息输出命令,则打开所述日 志文件,并在所述日志文件中记录相应的系统调试信息。优选的,所述的方法,还包括读取所述日志文件中的调试信息在当前程序界面进行展示。优选的,所述预定义的调试信息输出命令嵌入在系统的程序开发代码中。优选的,所述记录调试信息的步骤包括依据所述调试信息输出命令调用预置的程序模块,所述程序模块用于触发打开所 述日志文件,并在所述日志文件中记录相应的系统调试信息的操作。优选的,所述程序模块中具有防止调用冲突的进程互斥子模块。本发明实施例还公开了一种调试日志生成装置,包括日志文件创建模块,用于创建日志文件;记录模块,用于在Debug或Release版本下,若运行到预定义的调试信息输出命 令,则打开所述日志文件,并在所述日志文件中记录相应的系统调试信息。优选的,所述的装置,还包括展示模块,用于读取所述日志文件中的调试信息在当前程序界面进行展示。优选的,所述预定义的调试信息输出命令嵌入在系统的程序开发代码中。
优选的,所述记录模块包括调用子模块,用于依据所述调试信息输出命令调用预置的程序模块;程序模块,用于触发打开所述日志文件,并在所述日志文件中记录相应的系统调 试信息的操作。优选的,所述程序模块中具有防止调用冲突的进程互斥子模块。与现有技术相比,本发明具有以下优点本发明通过创建一个用来存储调试信息的日志文件,无论在Debug版本还是在 Release版本下,通过嵌入在程序开发代码中相关的调试信息输出命令,将相关的调试信息 写入所述日志文件中。由于该日志文件的独立性,故其打开展示并不受当前调试版本的限 制,即使对于在Debug版本下没有问题的源程序,在Release版本下却发生致命的错误的情 况,也可以通过预定义某些关键位置的日志输出来分析和排除错误,提供了一种发布版运 行下程序调试的手段。


图1是本发明的一种调试日志生成方法实施例的步骤流程图;图2是本发明的一种调试日志生成装置实施例的结构框图。
具体实施例方式为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实 施方式对本发明作进一步详细的说明。本发明可用于众多通用或专用的计算系统环境或配置中。例如多处理器系统、服 务器、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序 模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组 件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由 通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以 位于包括存储设备在内的本地和远程计算机存储介质中。公知的是,对于Debug版本而言,主要用于开发调试,对于Release版本而言,主要 用于对外发布。大多数情况下,这个两个版本在功能上是完全一致的,只不过Debug版本多 出了一些便于调试的特性。但是在少数情况下,Debug版本和Release版本程序运行结果 不一样。例如,在Debug版本下,程序运行正常,而在Release版本下,程序却可能由于多 种问题发生致命的系统错误,造成非法退出,在这种情况下,本专利发明人创造性地提出为 Release版本增加可写入调试信息至日志文件的功能。参考图1,示出了本发明的一种字幕制作系统的调试日志生成方法实施例的流程 图,具体可以包括以下步骤步骤101、创建日志文件;步骤102、在Debug或Re 1 ease版本下,若运行到预定义的调试信息输出命令,则打 开所述日志文件,并在所述日志文件中记录相应的系统调试信息。可以理解,所述日志文件为一个用来存储调试信息的物理文件,如c \log. txt。在具体应用中,所述调试信息可以预先定义为不同的属性,例如,预定义有A类、B类调试信 息,如果在程序中遇到需要写入A类调试信息的命令,则在日志文件中写入A类调试信息。 在实际中,所述调试信息可以由程序开发人员依据当前需要进行定义,例如,对于C类调试 信息当前并不关注,则不写入日志文件中。这种结合当前实际需要定义的调试信息,可以更 进一步帮助程序开发人员有针对性地查看系统运行状态和排查问题,从而有效简化程序开 发人员的工作。在具体实现中,所述预定义的调试信息输出命令可以嵌入在程序的开发代码中, 并且,本领域技术人员依据实际情况可以在程序的开发代码中嵌入一条或多条该调试信息 输出命令。在这种情况下,调试信息输出命令可以理解为,在需要输出调试信息的地方的输 出语句,当程序运行到此处时,即会判断预定义是否成功,若是,则执行相应的日志打开及 写入操作。应用本发明,无论在Debug版本,还是在Release版本下,所述日志文件既可以按 需要输出到当前的程序界面,也可以事后打开日志文件查看。为使本领域技术人员更好地理解本发明,以下提供一种打开日志文件并写入调试 信息的程序模块的代码示例void CFileLogger:WriteInfoLog(const CString&strlnfo){CFile fLog(_T(〃 C:\Log.txt"),CFile:modeCreate|CFilemodeNoTruncate|CFile:modeffrite|CFilet
ypeBinary);if (fLog. SeekToEndO ==0){BYTE UI [] = {0xFF,0xFE};fLog. Write (UI,2);}fLog. Write(strlnfo,(UINT)_tcslen (strlnfo)*sizeof (TCHAR)) ; //NO null-end charfLog. Close ();}例如,在Release版本下,若遇到需要写入某个预定义的调试信息的命令,即可利
用上述程序模块完成打开Log. txt文件,然后往里写入相关调试信息的操作。在本实施例中优选的是,为了确保上述程序模块在不同进程中同时调用时不会发 生冲突,还可以进一步在所述程序模块中增加一个具有防止调用冲突的进程互斥子模块, 该进程互斥子模块的代码示例为CSingleLock oLock(&m_oMutex, TRUE);其中,m_0MuteX定义为全局变量。此外,CFileLogger: WriteInfoLog()函数的使用方法的代码示例如下CString strlnfo ;
strlnfo. Format(_T(" RenderSceneImage ()costs% f ms\n" ),100);CFiIeLogger:WriteErrorLog(str);在本发明中,无论在Debug版本还是在Release版本下,都可以根据预定义的调试 信息命令记录所需的系统调试信息,并将信息写入物理日志文件或显示在窗口上。由于该 日志文件的独立性,故其打开展示并不受当前调试版本的限制,即使对于在Debug版本下 没有问题的源程序,在Release版本下却发生致命的错误的情况,也可以直接在Release版 本打开查看,从而简化程序开发人员的操作。对于前述的方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是 本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些 步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述 的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。参考图2,示出了本发明的一种字幕制作系统的调试日志生成装置实施例的结构 框图,具体可以包括日志文件创建模块21,用于创建日志文件;记录模块22,用于在Debug或Release版本下,若运行到预定义的调试信息输出命 令,则打开所述日志文件,并在所述日志文件中记录相应的系统调试信息。为便于相关技术人员查看调试信息,在本发明实施例还可以包括以下模块展示模块,用于读取所述日志文件中的调试信息在当前程序界面进行展示。在具体实现中,所述预定义的调试信息输出命令嵌入在系统的程序开发代码中。 在这种情况下,所述记录模块可以进一步包括以下模块调用子模块,用于依据所述调试信息输出命令调用预置的程序模块; 程序模块,用于触发打开所述日志文件,并在所述日志文件中记录相应的系统调 试信息的操作。为防止调用冲突,所述程序模块中还可以设置防止调用冲突的进程互斥子模块。由于本实施例基本相应于前述方法实施例,故本实施例的描述中未详尽之处,可 以参见前述实施例中的相关说明,在此就不赘述了。本说明书中的各个实施例重点说明的 都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。本发明优选可以应用中字幕机的调试环境下。字幕机是一种电视节目制作的专用 设备,一般而言,字幕机是由PC加上专业的字幕叠加卡和相应的字幕制作系统组成,用来 在视频信号上叠加图文字幕。字幕制作系统就是控制字幕以何种方式叠加到背景画面上, 与使用者交互的工具;有了计算机和字幕软件后,需要有一个能够允许背景画面输入,并且 在叠加字幕以后,最终输出带有字幕视频的设备。要想接收视频进入,而后把视频输出,是 另外需要其他附加设备的,字幕叠加卡就是这样的设备。以上对本发明所提供的一种调试日志生成方法及一种调试日志生成装置进行了 详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的 说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依 据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容 不应理解为对本发明的限制。
权利要求
1.一种调试日志生成方法,其特征在于,包括创建日志文件;在Debug或Release版本下,若运行到预定义的调试信息输出命令,则打开所述日志文 件,并在所述日志文件中记录相应的系统调试信息。
2.如权利要求1所述的方法,其特征在于,还包括读取所述日志文件中的调试信息在当前程序界面进行展示。
3.如权利要求1或2所述的方法,其特征在于,所述预定义的调试信息输出命令嵌入在 系统的程序开发代码中。
4.如权利要求3所述的方法,其特征在于,所述记录调试信息的步骤包括依据所述调试信息输出命令调用预置的程序模块,所述程序模块用于触发打开所述日 志文件,并在所述日志文件中记录相应的系统调试信息的操作。
5.如权利要求4所述的方法,其特征在于,所述程序模块中具有防止调用冲突的进程 互斥子模块。
6.一种调试日志生成装置,其特征在于,包括日志文件创建模块,用于创建日志文件;记录模块,用于在Debug或Release版本下,若运行到预定义的调试信息输出命令,则 打开所述日志文件,并在所述日志文件中记录相应的系统调试信息。
7.如权利要求6所述的装置,其特征在于,还包括展示模块,用于读取所述日志文件中的调试信息在当前程序界面进行展示。
8.如权利要求6或7所述的装置,其特征在于,所述预定义的调试信息输出命令嵌入在 系统的程序开发代码中。
9.如权利要求8所述的装置,其特征在于,所述记录模块包括调用子模块,用于依据所述调试信息输出命令调用预置的程序模块;程序模块,用于触发打开所述日志文件,并在所述日志文件中记录相应的系统调试信 息的操作。
10.如权利要求9所述的装置,其特征在于,所述程序模块中具有防止调用冲突的进程 互斥子模块。
全文摘要
本发明公开了一种调试日志生成方法,包括创建日志文件;在Debug或Release版本下,若运行到预定义的调试信息输出命令,则打开所述日志文件,并在所述日志文件中记录相应的系统调试信息。本发明可以在Debug版本和Release版本下能查看日志,简化程序开发人员的操作。
文档编号G06F9/44GK102073489SQ200910238729
公开日2011年5月25日 申请日期2009年11月23日 优先权日2009年11月23日
发明者吕精华, 郑培枫, 郭红艳, 陈丽爱 申请人:新奥特(北京)视频技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1