本发明涉及打印技术领域,特别是涉及一种嵌入式产品中调试打印机制的方法和系统。
背景技术:
随着嵌入式产品的芯片的处理能力的增强,嵌入式产品功能越来越丰富,其软件越来越复杂和庞大。单进程程序已无法满足需求,而GDB(GNU symbolic debugger,调试器)调试不能为多进程程序提供更多的支持,为此在代码中加入打印输出调试信息是一种简单有效满足需求的方式。
嵌入式产品在开发中,开发人员在调试时,需查看程序运行时的数据信息,在产品出厂后,在用户使用中出现故障时,维修人员查找问题时需获取产品运行中的输出日志信息。然而因嵌入式产品的程序庞大,使得打印信息非常多,开发人员或维修人员会因打印信息泛滥花费大量的时间进行查找相应的信息,造成调试或维修效率低。
技术实现要素:
基于此,有必要提供一种能节省时间的调试打印机制的方法。
一种调试打印机制的方法,包括以下步骤:
获取输入的打印参数;
根据所述输入的打印参数从初始化形成的模块化打印信息中筛选得到目标信息;
输出所述目标信息。
在其中一个实施例中,在所述获取输入的打印参数的步骤之前还包括步骤:
将打印信息划分成多个独立的打印区块,形成模块化打印信息。
在其中一个实施例中,在还包括步骤:
为每个打印区块分配模块标识和设置打印等级;
将所述模块标识和打印等级构成模块化打印信息的打印参数;
所述输入的打印参数包括打印区块的打印等级;
根据所述输入的打印参数从初始化形成的模块化打印信息中筛选得到目标信息的步骤具体为:
将所述输入的打印等级与模块化打印信息的打印参数中的打印等级比较,将模块化打印信息中打印等级小于等于所述输入的打印等级的打印区块作为目标信息。
在其中一个实施例中,在所述输入的打印参数还包括打印端口的使能值;
根据所述输入的打印参数从初始化形成的模块化打印信息中筛选得到目标信息的步骤还包括:
判断打印端口的使能值是否表示打开使能开关,若是,则进一步判断所述打印区块的打印等级是否不在预设范围内,若是,则屏蔽所述打印区块的所有打印,否则,进入所述将所述输入的打印等级与模块化打印信息的打印参数中的打印等级比较的步骤;
当打印端口的使能值是关闭使能开关时,屏蔽所述打印端口的打印信息。
在其中一个实施例中,在还包括步骤:
获取打印任务的时间戳和/或目标信息的格式化信息;
将所述目标信息、时间戳和/或格式化信息一并输出。
此外,还有必要提供一种能节省时间的调试打印机制的系统。
一种调试打印机制的系统,其特征在于,包括:
输入模块,用于获取输入的打印参数;
调制模块,用于根据所述输入的打印参数从初始化形成的模块化打印信息中筛选得到目标信息;
输出模块,用于输出所述目标信息。
在其中一个实施例中,在还包括:
初始化模块,用于将打印信息划分成多个独立的打印区块,形成模块化打印信息。
在其中一个实施例中,在所述初始化模块还用于为每个打印区块分配模块标识和设置打印等级,以及将所述模块标识和打印等级构成模块化打印信息的打印参数;
所述输入的打印参数包括打印区块的打印等级;
所述调制模块包括:
比较单元,用于将所述输入的打印等级与模块化打印信息的打印参数中的打印等级比较,将模块化打印信息中打印等级小于等于所述输入的打印等级的打印区块作为目标信息。
在其中一个实施例中,在所述输入的打印参数还包括打印端口的使能值;
所述调制模块还包括:
判断单元,用于判断打印端口的使能值是否表示打开使能开关,若是,则进一步判断所述打印区块的打印等级是否不在预设范围内;
屏蔽单元,用于在所述打印区块的打印等级不在预设范围内时,屏蔽所述打印区块的所有打印;
所述比较单元还用于在所述打印区块的打印等级在预设范围内时,将所述输入的打印等级与模块化打印信息的打印参数中的打印等级比较;
所述屏蔽单元还用于当打印端口的使能值表示关闭使能开关时,屏蔽所述打印端口的打印信息。
在其中一个实施例中,在还包括:
获取模块,用于获取打印任务的时间戳和/或目标信息的格式化信息;
所述输出模块还用于将所述目标信息、时间戳和/或格式化信息一并输出。
上述调试打印机制的方法和系统,采用根据输入的打印参数从模块化打印信息中筛选得到目标信息,进行输出打印,不需对整个模块化打印信息进行打印,只需对筛选得到的信息进行打印,方便开发调试时快速查找到所需信息,以及定位故障时快速获取日志信息,节省了大量时间。
附图说明
图1为一个实施例中调试打印机制的方法流程图;
图2为另一个实施例中调试打印机制的方法流程图;
图3为一个实施例中调试打印机制的系统的内部结构示意图;
图4为另一个实施例中调试打印机制的系统的内部结构示意图;
图5为一个实施例中调制模块的内部结构示意图;
图6为另一个实施例中调试打印机制的系统的内部结构示意图。
具体实施方式
如图1所示,在一个实施例中,一种调试打印机制的方法,包括以下步骤:
步骤S110,获取输入的打印参数。
具体的,可预先将打印信息划分成多个独立的打印区块,形成模块化打印信息。然后为每个打印区块分配模块标识和设置打印等级,且将模块标识和打印等级构成模块化打印信息的打印参数。打印信息是指嵌入式产品中某些功能的调试信息、运行数据信息等。获取用户通过串口、UI(User Interface,用户界面)或浏览器等输入的命令参数,对命令参数进行解析得到相应的打印参数。该命令参数可为查看打印区块的打印等级、设置打印等级、设置打印端口等。其中,模块标识可为模块名称和/或模块ID(Identity)号,每个模块名称对应一个唯一的模块ID号。打印等级是指打印的优先级,如优先级从高到低为全部打印信息、函数入口、正常的打印事件、低级意外事件、高级意外事件、致命错误等。其中,低级意外事件、高级意外事件是根据告警严重程度定义的。
步骤S120,根据输入的打印参数从初始化形成的模块化打印信息中筛选得到目标信息。
具体的,模块化打印信息是指前述的将打印信息划分成多个独立的打印区块后形成的,每个打印区块可以单独打印输出。根据输入的打印参数与模块化打印信息中打印参数比较,过滤掉不需要的打印信息,筛选得到目标信息,目标信息是指待打印的打印区块。
在一个实施例中,输入的打印参数包括打印区块的打印等级时,步骤S120具体为:将输入的打印等级与模块化打印信息的打印参数中的打印等级比较,将模块化打印信息中打印等级小于等于输入的打印等级的打印信息作为目标信息。
步骤S130,输出目标信息。
上述调试打印机制的方法,根据打印参数筛选得到目标信息,然后再打印输出该目标信息,不需对整个模块化打印信息进行打印,只需对筛选得到的信息进行打印,方便开发调试时快速查找到所需信息,以及定位故障时快速获取日志信息,节省了大量时间。
图2为一种调试打印机制的方法较为完整的流程示意图,具体包括以下步骤:
步骤S201,建立打印命令任务线程。
具体的,创建一个打印命令任务线程,用于控制打印队列表中的打印任务。
步骤S203,将模块化打印信息的各打印区块及对应的打印等级加入到打印队列表中。
具体的,将打印信息的各个打印区块及打印等级加入打印队列表中,以供通过命令动态操作打印区块的打印等级。
步骤S205,将模块标识、打印等级、格式化信息和打印端口构成模块化打印信息的打印参数。
具体的,模块标识可为模块名称或模块ID号。格式化信息是指实际要打印输出的值。
步骤S207,获取输入的打印参数。
具体的,预先增加一个打印处理的命令函数,获取用户通过串口、UI或浏览器输入的命令,采用命令函数对命令进行解析得到输入的打印参数。
步骤S209,判断输入的打印参数是否存在显示打印区块的状态,若是,则执行步骤S211,若否,则执行步骤S213。
具体的,对命令解析得到的打印参数中存在显示打印区块的状态时,显示打印队列表中打印区块的打印等级,即模块化打印信息的某个、部分或全部打印区块的打印等级。
步骤S211,显示打印队列表中打印区块的打印等级。
步骤S213,判断打印参数是否存在将打印队列表中各打印区块的打印等级设为默认值,若是,则执行步骤S215,若否,则执行步骤S217。
具体的,默认值是指系统设定的某个值,如打印等级值为1至10,默认设置为5。且可设1表示等级最高,10表示等级最低,或相反。
步骤S215,将打印队列表中所有打印区块的打印等级设为初始化的默认等级值。
步骤S217,判断输入的打印参数是否为设置打印端口,若是,则执行步骤S219,否则,执行步骤S221。
步骤S219,将打印端口设置为打印参数中的使能值。
具体的,该打印参数中设置的打印端口的使能值是表示打开使能开关,则可允许输出该打印端口的打印信息,打印参数中设置的打印端口的使能值是表示关闭使能开关,则可屏蔽该打印端口的打印信息。
步骤S221,判断输入的打印参数是否为对打印区块的打印等级进行设置,若是,则执行步骤S223,否则执行步骤S225。
步骤S223,将打印区块的打印等级设为打印参数中的打印等级值。
步骤S225,显示提示信息。
具体的,当打印参数中不是显示打印区块的状态、设置打印区块的打印等级为初始值或指定值,或设置打印端口的使能值,则显示提示信息,为用户提供帮助。
步骤S227,将输入的打印参数与模块化打印信息中的打印参数比较。
步骤S229,判断打印端口的使能值是否表示打开使能开关,若是,则执行步骤S231,否则执行步骤S233。
步骤S231,判断打印区块的打印等级是否不在预设范围内,若是,则执行步骤S235,否则执行步骤S237。
具体的,预先对打印区别的打印等级设有一个有效范围,如有效范围为1至20,当打印等级设为30时,表示该打印区块的打印等级是关闭状态。
步骤S233,屏蔽打印端口的打印信息。
具体的,使能开关打开时,可将打印端口的打印信息输出打印。使能开关关闭时,打印端口的打印信息全部关闭,无法输出打印。
步骤S235,屏蔽打印区块的所有打印。
步骤S237,判断模块化打印信息中打印区块的打印等级是否小于等于输入的打印区块的打印等级,若是,则执行步骤S239,若否,则执行步骤S241。
步骤S239,将模块化打印信息中的打印等级小于等于输入的打印等级的打印区块作为目标信息。
具体的,预先设置的模块化打印信息中打印区块的打印等级值为1至10,1表示等级最高,10表示等级最低,当输入的打印等级为5时,则将打印等级为5至10的打印区块作为目标信息,即为待打印信息。
步骤S241,屏蔽模块化打印信息。
步骤S243,获取打印任务的时间戳。
步骤S245,将目标信息、时间戳和格式化信息一并输出。
上述步骤S229至步骤S245是根据输入的打印参数与模块化打印信息中的打印参数比较,得到目标信息的具体步骤。
在其他实施例中,可仅包括时间戳或格式化信息。
如图3所示,在一个实施例中,一种调试打印机制的系统,包括输入模块10、调制模块20和输出模块30。其中:
输入模块10用于获取输入的打印参数。具体的,获取用户通过串口、UI(User Interface,用户界面)或浏览器等输入的命令参数,对命令参数进行解析得到相应的打印参数。该命令参数可为查看打印区块的打印等级、设置打印等级、设置打印端口等。
调制模块20用于根据输入的打印参数从初始化形成的模块化打印信息中筛选得到目标信息。具体的,模块化打印信息是指将打印信息划分成多个独立的打印区块,然后形成模块化打印信息。打印信息是指嵌入式产品中某些功能的调试信息、运行数据信息等。每个打印区块可以单独打印输出。根据输入的打印参数与模块化打印信息中打印参数比较,过滤掉不需要的打印信息,筛选得到目标信息,目标信息是指待打印的打印区块。
输出模块30用于打印输出目标信息。
如图4所示,在一个实施例中,上述调试打印机制的系统,除了包括输入模块10、调整模块20和输出模块30,还包括初始化模块40。
初始化模块40用于将打印信息划分成多个独立的打印区块,形成模块化打印信息,并为每个打印区块分配模块标识和设置打印等级,以及将模块标识和打印等级构成模块化打印信息的打印参数。其中,模块标识可为模块名称和/或模块ID(Identity)号,每个模块名称对应一个唯一的模块ID号。打印等级是指打印的优先级,如优先级从高到低为全部打印信息、函数入口、正常的打印事件、低级意外事件、高级意外事件、致命错误等。
在一个实施例中,输入的打印参数包括打印端口的使能值、打印区块的打印等级。如图5所示,调制模块20包括判断单元210、屏蔽单元220和比较单元230。其中:
判断单元210用于判断打印端口的使能值是否表示打开使能开关,若是,则进一步判断打印区块的打印等级是否不在预设范围内。
屏蔽单元220还用于当打印端口的使能值表示关闭使能开关时,屏蔽打印端口的打印信息,以及在打印区块的打印等级不在预设范围内时,屏蔽打印区块的所有打印。具体的,预先对打印区别的打印等级设有一个有效范围,如有效范围为1至20,当打印等级设为30时,表示该打印区块的打印等级是关闭状态。
比较单元230还用于在打印区块的打印等级在预设范围内时,将输入的打印等级与模块化打印信息的打印参数中的打印等级比较,将模块化打印信息中打印等级小于等于输入的打印等级的打印信息作为目标信息。
在其他实施例中,调制模块20可包括判断单元210和屏蔽单元220,或者包括比较单元230。
在一个实施例中,如图6所示,上述调试打印机制的系统,除了包括输入模块10、调整模块20、输出模块30和初始化模块40,还包括任务线程模块50、判断模块60、显示模块70、设置模块80和获取模块90。其中:
任务线程模块50用于建立打印命令任务线程。具体的,创建一个打印命令任务线程,用于控制打印队列表中的打印任务。
初始化模块40将模块化打印信息的各打印区块及对应的打印等级加入打印列表中,且将模块标识、打印等级、格式化信息和打印端口构成模块化打印信息的打印参数。具体的,模块标识可为模块名称或模块ID号。格式化信息是指实际要打印输出的值。
判断模块60用于判断输入的打印参数是否存在显示打印区块的状态,若是,则显示模块70显示打印区块的打印等级。
判断模块60还用于判断打印参数是否存在将打印队列表中各打印区块的打印等级设为默认值,若是,则设置模块80将打印队列表中所有打印区块的打印等级设为初始化的默认等级值。判断模块60还用于判断输入的打印参数是否为设置打印端口,若是,则设置模块80将打印端口设置为打印参数中的使能值。具体的,该打印参数中设置的打印端口的使能值是表示打开使能开关,则可允许输出该打印端口的打印信息,打印参数中设置的打印端口的使能值是表示关闭使能开关,则可屏蔽该打印端口的打印信息。
获取模块90用于获取打印任务的时间戳和/或目标信息的格式化信息。
输出模块30还用于将所述目标信息、时间戳和/或格式化信息一并打印输入。
上述调试打印机制的方法和系统,采用根据输入的打印参数从模块化打印信息中筛选得到目标信息,进行输出打印,不需对整个模块化打印信息进行打印,只需对筛选得到的信息进行打印,方便开发调试时快速查找到所需信息,以及定位故障时快速获取日志信息,节省了大量时间。
另外,通过打印等级筛选目标信息,方便筛选得到需要的打印区块;通过输入打印参数可对打印端口的使能值进行设置,控制打印端口是否可进行打印,实现对打印端口的控制,方便用户操作。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。