基于线程信息的多线程并发执行跟踪方法及系统的利记博彩app

文档序号:6331325阅读:146来源:国知局
专利名称:基于线程信息的多线程并发执行跟踪方法及系统的利记博彩app
技术领域
本发明涉及软件管理技术领域,更具体地说,涉及一种基于线程信息的多线程并 发执行跟踪方法及系统。
背景技术
在软件研发过程中,代码执行过程跟踪是分析问题、定位原因的有效手段。目前, 最直观的代码跟踪方法就是单步调试,但此方法对多线程并发的执行过程无法有效执行。 对于这种多线程并发的执行过程,一般通过在各个模块的代码适当位置输出跟踪日志的方 法,记录多线程并发执行中各个模块的执行过程。但是,对于公共模块的调用,如果不能有 效标识是被哪个业务模块所调用,由于并发过程的随机性,将导致并发业务对公共模块调 用产生的跟踪日志混杂的一起,而无法分析某个业务的完整执行过程。因此,对此类跟踪日志的分析,有两点要求第一要求每条跟踪日志都要有相关业 务流程的标识,以便区分不同业务流程产生的跟踪日志;第二要把同一业务流程的跟踪日 志独立出来以便于分析。目前,现有的一种软件执行过程的跟踪方法为在业务模块调用公共模块的时候, 通过调用参数传入业务数据,然后在公共模块中判断传入的业务数据,依此调整输入跟踪 日志的信息,使公共模块跟踪日志与业务发生关联,这样,满足跟踪日志分析的第一个要 求跟踪日志包含业务标识。但是,由于上述的方法并不能满足第二个要求,因此又提出了另一种方法,是将调 用公共模块时传入的业务数据改成与该业务对应的跟踪日志输出流对象,从而使同一业务 的跟踪日志都通过该日志输出对象写入跟踪日志文件,在实现跟踪日志与业务关联的同 时,将同一业务的跟踪日志独立出来集中写入同一个跟踪日志。然而,上述两种软件执行过程的跟踪方法都存在以下缺点其一,针对公共模块的 函数,都需要增加用来描述业务相关数据额外的参数,增加操作步骤;其二,一旦需要调整 传入的业务数据,则可能需要修改所有函数的参数声明,操作更为复杂。

发明内容
有鉴于此,本发明提供一种基于线程信息的多线程并发执行跟踪方法及系统,以 简单方便实现公共模块输出跟踪日志与相关业务的关联,以及同一业务的跟踪日志集中输 出目的。为实现上述目的,提出的技术方案如下一种基于线程信息的多线程并发执行跟踪方法,包括在业务流程开始的代码位置,绑定当前业务数据与当前线程ID,且为当前业务分 配一个专用的业务日志对象;在当前业务的执行过程中,利用所述绑定的业务数据与线程ID,通过所述专用的 业务日志对象输出跟踪日志。
优选地,所述输出跟踪日志的方法包括获取当前线程ID;查找预存的在线业务与执行线程对应关系表,根据所述当前线程ID获得当前业 务数据;结合所述当前业务数据与代码跟踪信息形成跟踪日志信息;通过所述专用的业务日志对象将所述跟踪日志信息写入跟踪日志并输出。优选地,所述在线业务与执行线程对应关系表包括在线业务ID、在线业务名称、 在线业务日志对象以及线程ID。优选地,所述绑定当前业务数据与当前线程ID具体为将当前业务数据和当前线 程ID写入同一数据结构体中。一种基于线程信息的多线程并发执行跟踪系统,包括业务数据和线程ID绑定单元,用于在业务流程开始的代码位置,绑定当前业务数 据与当前线程ID;业务日志对象分配单元,用于为绑定了线程ID的当前业务分配一个专用的业务 日志对象;跟踪日志输出单元,用于在当前业务的执行过程中,利用所述绑定的业务数据与 线程ID,通过所述专用的业务日志对象输出跟踪日志。优选地,所述跟踪日志输出单元包括获取线程ID模块,用于获取当前线程ID ;获取业务数据模块,存有在线业务与执行线程对应关系表,用于查找所述在线业 务与执行线程对应关系表,根据所述当前线程ID获得当前业务数据;跟踪日志信息生成模块,用于将所述当前业务数据与代码跟踪信息构成跟踪日志 fn息;跟踪日志输出模块,用于通过所述专用的业务日志对象将所述跟踪日志信息写入 跟踪日志并输出。从上述的技术方案可以看出,本发明公开的基于线程信息的多线程并发执行跟踪 方法中,利用业务执行过程中线程ID不变原理,在业务流程启动时,将该业务数据与当前 线程ID绑定,从而在当前业务执行的任何调用位置,都可以通过不变的线程ID,获取业务 数据,不需要在记录公共模块跟踪日志的调用中传入额外信息,简单方便地实现了公共模 块跟踪日志与业务关联输出的目的。并且,由于不同的业务在其开始处理时分配了不同的 业务日志对象,所以由某个业务日志对象输出的跟踪日志,只与当前业务相关,达到输出的 跟踪日志集中的目的。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以 根据这些附图获得其他的附图。图1为本发明实施例公开的一种基于线程信息的多线程并发执行跟踪方法的流程图;图2为本发明实施例公开的输出跟踪日志的方法的流程图;图3为本发明实施例公开的一种基于线程信息的多线程并发执行跟踪系统的结 构示意图;图4为本发明实施例公开的跟踪日志输出单元的结构示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。本发明实施例公开了一种基于线程信息的多线程并发执行跟踪方法及系统,以实 现简单方便实现了公共模块输出日志与相关业务的关联,以及同一业务的跟踪日志集中输 出的目的。以下分别通过实施例具体介绍基于线程信息的多线程并发执行跟踪方法及系统。如图1所示,所述基于线程信息的多线程并发执行跟踪方法包括步骤S11、在业务流程开始的代码位置,绑定当前业务数据与当前线程ID,且为当 前业务分配一个专用的业务日志对象;具体的,所述绑定当前业务数据与当前线程ID为将当前业务数据和当前线程ID 写入同一数据结构体中。一个线程实际上是一个执行单元,当操作系统产生一个进程时,它自动为该进程 产生一个主线程,该线程通常从业务模块的第一条指令处开始执行。而线程ID就是用来标 记线程的线程编号,并且,每个线程的线程ID不变。步骤S12、在当前业务的执行过程中,利用所述绑定的业务数据与线程ID,通过所 述专用的业务日志对象输出跟踪日志。当前业务的执行过程中存有业务模块调用公共模块的现象,此时,由于业务数据 与线程ID绑定,公共模块可以通过线程ID获取业务数据,通过所述专用的业务日志对象输 出跟踪日志,该跟踪日志是与业务相关联的。具体的,利用所述绑定的业务数据与线程ID输出跟踪日志采用的是封装日志类 方式。本发明实施例公开的基于线程信息的多线程并发执行跟踪方法,具有简单、易用 和通用的优点。具体的,利用在线业务执行过程中线程ID不变原理,将当前业务数据与当 前线程ID绑定,简化了跟踪日志的输出过程,实现原理和过程简单;通过封装跟踪日志类, 简化了跟踪日志输出的调用过程,易于使用;因为线程ID不变原理适用于所有的主流操作 系统,所述该方法具有广泛的应用范围。并且,同一线程内,在线业务分为多个,选取一个业务为当前业务,将其和与其相 对应的线程ID绑定,执行上述实施例公开的内容直至该业务执行完毕,再选取另外一个业 务为当前业务,重复执行上述过程。具体的,如图2所示,上述实施例公开的输出跟踪日志的方法包括
步骤S21、获取当前线程ID ;步骤S22、查找预存的在线业务与执行线程对应关系表,根据所述当前线程ID获 得当前业务数据;具体的,所述在线业务与执行线程对应关系表中为一个数据结构,该数据结构中 至少包含在线业务ID、在线业务名称、在线业务日志对象以及线程ID。基于该对应关系表,在当前业务的执行过程中的任何位置,都可以获取当前业务 的数据。步骤S23、结合所述当前业务数据与代码跟踪信息形成跟踪日志信息;具体的,代码跟踪信息用于当前业务描述所执行到的代码位置。不同的代码跟踪 信息表示当前业务执行到不同位置的代码,结合所述当前业务数据与代码跟踪信息形成的 跟踪日志信息可以表示当前业务执行的不同进度。步骤S24、通过所述专用的业务日志对象将所述跟踪日志信息写入跟踪日志并输
出ο同样,由于代码跟踪信息的作用,可以实现在业务执行程序的任何代码位置生成 并输出跟踪日志。本发明实施例公开的基于线程信息的多线程并发执行跟踪系统,如图3所示,包 括业务数据和线程ID绑定单元101、业务日志对象分配单元102以及跟踪日志输出单元 103,其中业务数据和线程ID绑定单元101用于在业务流程开始的代码位置,绑定当前业务 数据与当前线程ID;业务日志对象分配单元102用于为绑定了线程ID的当前业务分配一个专用的业 务日志对象;跟踪日志输出单元103用于在当前业务的执行过程中,利用所述绑定的业务数据 与线程ID,通过所述专用的业务日志对象输出跟踪日志。具体的,如图4所示,跟踪日志输出单元103包括获取线程ID模块201,获取业 务数据模块202、跟踪日志信息生成模块203以及跟踪日志输出模块204,其中获取线程ID模块201用于获取当前线程ID ;获取业务数据模块202存有在线业务与执行线程对应关系表,用于查找所述在线 业务与执行线程对应关系表,根据所述当前线程ID获得当前业务数据;跟踪日志信息生成模块203用于结合所述当前业务数据与代码跟踪信息形成跟 踪曰志/[目息;跟踪日志输出模块204用于通过所述专用的业务日志对象将所述跟踪日志信息 写入跟踪日志并输出。本实施例公开的基于线程信息的多线程并发执行跟踪系统与上述实施例公开的 基于线程信息的多线程并发执行跟踪方法相对应,该系统的具体工作过程请参见上述实施 例公开的内容,此处不再赘述。对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。 对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的 一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一 致的最宽的范围。
权利要求
一种基于线程信息的多线程并发执行跟踪方法,其特征在于,包括在业务流程开始的代码位置,绑定当前业务数据与当前线程ID,且为当前业务分配一个专用的业务日志对象;在当前业务的执行过程中,利用所述绑定的业务数据与线程ID,通过所述专用的业务日志对象输出跟踪日志。
2.根据权利要求1所述的方法,其特征在于,所述输出跟踪日志的方法包括 获取当前线程ID ;查找预存的在线业务与执行线程对应关系表,根据所述当前线程ID获得当前业务数据;结合所述当前业务数据与代码跟踪信息形成跟踪日志信息;通过所述专用的业务日志对象将所述跟踪日志信息写入跟踪日志并输出。
3.根据权利要求2所述的方法,其特征在于,所述在线业务与执行线程对应关系表包 括在线业务ID、在线业务名称、在线业务日志对象以及线程ID。
4.根据权利要求1所述的方法,其特征在于,所述绑定当前业务数据与当前线程ID具 体为将当前业务数据和当前线程ID写入同一数据结构体中。
5. 一种基于线程信息的多线程并发执行跟踪系统,其特征在于,包括业务数据和线程ID绑定单元,用于在业务流程开始的代码位置,绑定当前业务数据与 当前线程ID ;业务日志对象分配单元,用于为绑定了线程ID的当前业务分配一个专用的业务日志 对象;跟踪日志输出单元,用于在当前业务的执行过程中,利用所述绑定的业务数据与线程 ID,通过所述专用的业务日志对象输出跟踪日志。
6.根据权利要求5所述的系统,其特征在于,所述跟踪日志输出单元包括 获取线程ID模块,用于获取当前线程ID ;获取业务数据模块,存有在线业务与执行线程对应关系表,用于查找所述在线业务与 执行线程对应关系表,根据所述当前线程ID获得当前业务数据;跟踪日志信息生成模块,用于将所述当前业务数据与代码跟踪信息构成跟踪日志信息;跟踪日志输出模块,用于通过所述专用的业务日志对象将所述跟踪日志信息写入跟踪 日志并输出。
全文摘要
本发明公开了一种基于线程信息的多线程并发执行跟踪方法,包括在业务流程开始的代码位置,绑定当前业务数据与当前线程ID,且为当前业务分配专用的业务日志对象;在当前业务的执行过程中,利用绑定的业务数据与线程ID,通过专用的业务日志对象输出跟踪日志。其中,利用线程ID不变原理,业务流程启动时,将该业务数据与当前线程ID绑定,从而在当前业务执行的任何调用位置,都可以通过不变的线程ID,获取业务数据,简单方便地实现了跟踪日志与业务关联输出的目的。并且,对不同的业务在其开始处理时分配了不同的业务日志对象,由某个业务日志对象输出的跟踪日志,只与当前业务相关,达到输出的跟踪日志集中的目的。
文档编号G06F11/36GK101916226SQ20101027063
公开日2010年12月15日 申请日期2010年8月31日 优先权日2010年8月31日
发明者刘江宁, 王进 申请人:山东中创软件商用中间件股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1