CN106933577A - 基于Python实现的查询软件平台控制块的方法及系统 - Google Patents
基于Python实现的查询软件平台控制块的方法及系统 Download PDFInfo
- Publication number
- CN106933577A CN106933577A CN201710113944.3A CN201710113944A CN106933577A CN 106933577 A CN106933577 A CN 106933577A CN 201710113944 A CN201710113944 A CN 201710113944A CN 106933577 A CN106933577 A CN 106933577A
- Authority
- CN
- China
- Prior art keywords
- control block
- block
- call back
- back function
- python
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于Python实现的查询软件平台控制块的方法及系统,涉及软件控制块查询领域。该方法的步骤为:S1:指定待解析模块的头文件;S2:使用Python程序解析头文件中的所有控制块,生成每个控制块对应的回调函数;S3:制定每个控制块的查询命令,将所有控制块的查询命令关联至控制块输出命令行;S4:将控制块输出命令行和所有控制块的回调函数关联后,生成控制块查询文件。本发明能够使用一条命令查看控制块的所有数据,其工作效率、工作精度和工作质量均较高,非常适于推广。
Description
技术领域
本发明涉及软件控制块查询领域,具体涉及一种基于Python实现的查询软件平台控制块的方法及系统。
背景技术
Python是一种面向对象的解释型计算机程序设计语言。运行Python程序时,不需要像其它语言(例如C语言或者C++语言)必须通过编译及链接等中间步骤,直接执行Python程序即可。因此Python程序具有在不同情况下快速调整的能力,往往在修改代码后能立即看到程序修改后的结果,调试和修改都非常方便。
控制块(Control Block)是指各个模块内部的一种数据结构,用来保存记录模块内部的数据。一般一个模块内部会有大量的控制块,当控制块内部会镶嵌其它子控制块时,控制块的数据会非常复杂。
现有的查询控制块的方法为:通过人工编写各个控制块的数据的显示函数后导入终端进行查询,上述方法存在以下缺陷:
(1)人工编写各个控制块的显示函数的工作量较大,不仅工作效率较低,而且可能在编写过程中出现大量的错误,工作精度严重不足。
(2)在终端查询控制块时,会根据各个控制块的显示函数查阅对应控制块的部分数据,当因异常原因(例如查询过程出现错误等)需要查询指定控制块的完整数据时,需要设置断点来进行查询;而对于协议模块而言,一般情况下会有协议报文交互,因此若设置断点时间过长,可能导致因信令超时和协议断邻引发的其它问题,严重影响查询控制块的工作质量。
发明内容
针对现有技术中存在的缺陷,本发明解决的技术问题为:使用一条命令查看控制块的所有数据。本发明的工作效率、工作精度和工作质量均较高。
为达到以上目的,本发明提供的基于Python实现的查询软件平台控制块的方法,包括以下步骤:
S1:指定待解析模块的头文件,转到S2;
S2:使用Python程序解析头文件中的所有控制块,生成每个控制块对应的回调函数,转到S3;
S3:制定每个控制块的查询命令,将所有控制块的查询命令关联至控制块输出命令行,转到S4;
S4:将控制块输出命令行和所有控制块的回调函数关联后,生成控制块查询文件。
本发明提供的实现上述方法的基于Python实现的查询软件平台控制块的系统,包括头文件解析单元、控制块回调函数生成单元、控制块命令行制定单元和控制块查询文件生成单元;
头文件解析单元用于:指定待解析模块的头文件,向控制块回调函数生成单元发送控制块回调函数生成信号;
控制块回调函数生成单元用于:收到控制块回调函数生成信号后,使用Python程序解析头文件中的所有控制块,生成每个控制块对应的回调函数,向控制块命令行制定单元发送控制块命令行制定信号;
控制块命令行制定单元用于:收到控制块命令行制定信号后,制定每个控制块的查询命令,将所有控制块的查询命令关联至控制块输出命令行,向控制块查询文件生成单元发送控制块查询文件生成信号;
控制块查询文件生成单元用于:收到控制块查询文件生成信号后,将控制块输出命令行和所有控制块的回调函数关联后,生成控制块查询文件。
与现有技术相比,本发明的优点在于:
与现有技术中人工编写各个控制块的显示函数相比,参见S1和S2可知,本发明通过Python程序直接解析头文件中的所有控制块,来生成每个控制块对应的回调函数,无需重新对控制块进行编码。因此,不仅显著提高了回调函数生成的工作效率,而且回调函数生成时不会出现错误,极大的提高了工作精度。
与此同时,参见S3和S4可知,本发明的所有控制块的查询命令会关联至控制块输出命令行,控制块输出命令行会与所有控制块的回调函数关联。因此,与现有技术中需要设置断点相比,本发明直接根据不同控制块的查询命令来显示对应控制块的所有数据,因此不需要设置断点,显著提高了工作质量,不仅可以随时查询控制块,便于定位和维护,而且使用一条命令即可查看控制块的所有数据,扩展非常方便。
附图说明
图1为本发明实施例中基于Python实现的查询软件平台控制块的方法的流程图。
具体实施方式
以下结合附图及实施例对本发明作进一步详细说明。
参见图1所示,本发明实施例中的基于Python实现的查询软件平台控制块的方法,该方法包括以下步骤:
S1:指定待解析模块的头文件,转到S2。
S1中以RLDF模块内部头文件rldf.h中的结构体控制块RLDF_ILM_LDP_LSP_CB为例,该控制块格式信息包含如下字段:
typedef struct rldf_ilm_ldp_lsp_cb
{
RLDF_ILM_CB ilm;
AVLL_NODE ilm_ldp_lsp_tree_node;
RLDF_LDP_FEC_KEY fec_id;
}
RLDF_ILM_LDP_LSP_CB;
S2:使用Python程序解析头文件中的所有控制块,生成每个控制块对应的回调函数,转到S3。
S2中解析1个控制块的具体流程为:
S201:解析控制块,转到S202;
S202:判断当前控制块中是否存在子控制块,若是,转到S203,否则转到S204;
S203:解析当前控制块中的所有子控制块,转到S204;
S204:根据解析数据生成当前控制块的回调函数。
S2以RLDF_ILM_LDP_LSP_CB为例,使用Python解析后控制块的回调函数rldf_ilm_ldp_lsp_outlog如下,其中rldf_print_cli_cb_info为控制块每个字段的显示函数:
S3:制定每个控制块的查询命令,将所有控制块的查询命令关联至控制块输出命令行,转到S4。
S4:将控制块输出命令行和所有控制块的回调函数关联后,生成控制块查询文件(可执行文件),转到S5。
S5:在控制块查询文件的控制块输出命令行中,输入控制块的查询命令后查询该控制块的所有数据。以RLDF_ILM_LDP_LSP_CB为例,命令行形式show rldf debug cb 1cb_type cb_key其中cb_type为模块为每个控制块分配内存的索引,RLDF_ILM_LDP_LSP_CB的索引值定义为#define MEM_RLDF_FTN_LDP_LSP_CB0x00000044,十进制数据即69,cb_key为控制块key值,RLDF_ILM_LDP_LSP_CB的key值为入标签,通过转发表查看为786433,执行命令行后显示信息如下所示。
FH-CR8000#show rldf debug cb 1 69 786433
Control-Block Address:0X41718E2C{
ilm(0X41718E2C/236)={
srv_cb(0X41718E2C/68)={
service_type=0X00000002(DEC:2)
fsm_state=0X00000000(DEC:0)
lsp_xc_index=0X00000029(DEC:41)
self=0X41718E2C(DEC:1097961004)
xc_node(0X41718E54/16)={
parent=0X3FDA5F90(DEC:1071275920)
left=0X00000000(DEC:0)
right=0X3F820028(DEC:1065484328)
l_height=0X00000000(DEC:0)
r_height=0X00000001(DEC:1)
}
retry=0X00000000(DEC:0)
retry_failed=0X00000000(DEC:0)
lsp_sig_protocol=0X00000003(DEC:3)
}
in_label(0X41718E70/24)={
flags=0X00000000(DEC:0)
pad=0X00000000(DEC:0)
len=0X00000004(DEC:4)
label(0X41718E78/16)=
0X01000C00 0X00000000 0X00000000 0X00000000}
label_operator=0X00000002(DEC:2)
nhlfe_list(0X41718E8C/12)={
next=0X41718E8C(DEC:1097961100)
prev=0X41718E8C(DEC:1097961100)
self=0X00000000(DEC:0)
}
node_type=0X00000003(DEC:3)
build_time=0X00000053(DEC:83)
dci_block_state(0X41718EA0/60)=
0X00000000 0X00000000 0X00000000 0X00000000
0X00000000 0X00000000 0X00000000 0X00000000
0X00000000 0X00000000 0X00000000 0X00000000
0X00000000 0X00000000 0X00000000
nhlfe_dci_block_state(0X41718EDC/60)=
0X00000000 0X00000000 0X00000000 0X00000000
0X00000000 0X00000000 0X00000000 0X00000000
0X00000000 0X00000000 0X00000000 0X00000000
0X00000000 0X00000000 0X00000000
}
ilm_ldp_lsp_tree_node(0X41718F18/16)={
parent=0X3F8200EC(DEC:1065484524)
left=0X00000000(DEC:0)
right=0X00000000(DEC:0)
l_height=0X00000000(DEC:0)
r_height=0X00000000(DEC:0)
}
fec_id(0X41718F28/44)={
vrf_id=0X00000000(DEC:0)
fec_prefix_len=0X00000020(DEC:32)
fec_addr(0X41718F2E/36)={
type=0X00000001(DEC:1)
length=0X00000004(DEC:4)
pad1=0X00000000(DEC:0)
address(0X41718F32/32)=
0X01010101 0X00000000 0X00000000 0X00000000
0X00000000 0X00000000 0X00000000 0X00000000
}
}
}
本发明实施例提供的实现上述所述方法的基于Python实现的查询软件平台控制块的系统,包括头文件解析单元、控制块回调函数生成单元、控制块命令行制定单元、控制块查询文件生成单元和控制块数据显示单元。
头文件解析单元用于:指定待解析模块的头文件,向控制块回调函数生成单元发送控制块回调函数生成信号。
控制块回调函数生成单元用于:收到控制块回调函数生成信号后,使用Python程序解析头文件中的所有控制块,生成每个控制块对应的回调函数,向控制块命令行制定单元发送控制块命令行制定信号。
控制块回调函数生成单元生成每个控制块对应的回调函数的具体工作流程为:解析控制块,判断当前控制块中是否存在子控制块,若是,解析当前控制块中的所有子控制块后,根据解析数据生成当前控制块的回调函数;否则直接根据解析数据生成当前控制块的回调函数。
控制块命令行制定单元用于:收到控制块命令行制定信号后,制定每个控制块的查询命令,将所有控制块的查询命令关联至控制块输出命令行,向控制块查询文件生成单元发送控制块查询文件生成信号;
控制块查询文件生成单元用于:收到控制块查询文件生成信号后,将控制块输出命令行和所有控制块的回调函数关联后,生成控制块查询文件(可执行文件)。
控制块数据显示单元用于:在控制块查询文件的控制块输出命令行中,输入控制块的查询命令后查询该控制块的所有数据。
进一步,本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
Claims (8)
1.一种基于Python实现的查询软件平台控制块的方法,其特征在于,该方法包括以下步骤:
S1:指定待解析模块的头文件,转到S2;
S2:使用Python程序解析头文件中的所有控制块,生成每个控制块对应的回调函数,转到S3;
S3:制定每个控制块的查询命令,将所有控制块的查询命令关联至控制块输出命令行,转到S4;
S4:将控制块输出命令行和所有控制块的回调函数关联后,生成控制块查询文件。
2.如权利要求1所述的基于Python实现的查询软件平台控制块的方法,其特征在于,S2中解析1个控制块的具体流程为:
S201:解析控制块,转到S202;
S202:判断当前控制块中是否存在子控制块,若是,转到S203,否则转到S204;
S203:解析当前控制块中的所有子控制块,转到S204;
S204:根据解析数据生成当前控制块的回调函数。
3.如权利要求1所述的基于Python实现的查询软件平台控制块的方法,其特征在于,S4之后还包括以下步骤:S5:在控制块查询文件的控制块输出命令行中,输入控制块的查询命令后查询该控制块的所有数据。
4.如权利要求1至3任一项所述的基于Python实现的查询软件平台控制块的方法,其特征在于:S4中所述控制块查询文件为可执行文件。
5.一种实现权利要求1至4任一项所述方法的基于Python实现的查询软件平台控制块的系统,其特征在于:该系统包括头文件解析单元、控制块回调函数生成单元、控制块命令行制定单元和控制块查询文件生成单元;
头文件解析单元用于:指定待解析模块的头文件,向控制块回调函数生成单元发送控制块回调函数生成信号;
控制块回调函数生成单元用于:收到控制块回调函数生成信号后,使用Python程序解析头文件中的所有控制块,生成每个控制块对应的回调函数,向控制块命令行制定单元发送控制块命令行制定信号;
控制块命令行制定单元用于:收到控制块命令行制定信号后,制定每个控制块的查询命令,将所有控制块的查询命令关联至控制块输出命令行,向控制块查询文件生成单元发送控制块查询文件生成信号;
控制块查询文件生成单元用于:收到控制块查询文件生成信号后,将控制块输出命令行和所有控制块的回调函数关联后,生成控制块查询文件。
6.如权利要求5所述的基于Python实现的查询软件平台控制块的系统,其特征在于:所述控制块回调函数生成单元生成每个控制块对应的回调函数的具体工作流程为:解析控制块,判断当前控制块中是否存在子控制块,若是,解析当前控制块中的所有子控制块后,根据解析数据生成当前控制块的回调函数;否则直接根据解析数据生成当前控制块的回调函数。
7.如权利要求5所述的基于Python实现的查询软件平台控制块的系统,其特征在于:该系统还包括控制块数据显示单元,其用于:在控制块查询文件的控制块输出命令行中,输入控制块的查询命令后查询该控制块的所有数据。
8.如权利要求5至7任一项所述的基于Python实现的查询软件平台控制块的系统,其特征在于:所述控制块查询文件生成单元生成的控制块查询文件为可执行文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710113944.3A CN106933577B (zh) | 2017-02-28 | 2017-02-28 | 基于Python实现的查询软件平台控制块的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710113944.3A CN106933577B (zh) | 2017-02-28 | 2017-02-28 | 基于Python实现的查询软件平台控制块的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106933577A true CN106933577A (zh) | 2017-07-07 |
CN106933577B CN106933577B (zh) | 2020-04-28 |
Family
ID=59423584
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710113944.3A Active CN106933577B (zh) | 2017-02-28 | 2017-02-28 | 基于Python实现的查询软件平台控制块的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106933577B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108268594A (zh) * | 2017-12-14 | 2018-07-10 | 北京奇艺世纪科技有限公司 | 一种数据查询方法和装置 |
CN110727565A (zh) * | 2018-07-16 | 2020-01-24 | 普天信息技术有限公司 | 一种网络设备平台信息收集方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1501624A (zh) * | 2002-11-15 | 2004-06-02 | 深圳市中兴通讯股份有限公司 | 解释内存数据块的数据结构的方法 |
US8627294B1 (en) * | 2003-11-14 | 2014-01-07 | Oracle America, Inc. | Method and apparatus for synchronization in a multiplexed arbitrary-action tracing framework |
-
2017
- 2017-02-28 CN CN201710113944.3A patent/CN106933577B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1501624A (zh) * | 2002-11-15 | 2004-06-02 | 深圳市中兴通讯股份有限公司 | 解释内存数据块的数据结构的方法 |
US8627294B1 (en) * | 2003-11-14 | 2014-01-07 | Oracle America, Inc. | Method and apparatus for synchronization in a multiplexed arbitrary-action tracing framework |
Non-Patent Citations (3)
Title |
---|
I非常完美: "python解析C语言结果", 《HTTPS://WWW.CNBLOGS.COM/VERYPERFECT/P/5119573.HTML》 * |
后营马族子弟: "从用python自动生成.h的头文件集合和类声明集合到用python读写文件", 《HTTPS://WWW.CNBLOGS.COM/SILENTNIGHT/P/5289211.HTML》 * |
寒魔影: "C语言 结构体(嵌套结构体--结构体数组)", 《HTTPS://WWW.CNBLOGS.COM/ZHANGGAOFENG/P/5797195.HTML》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108268594A (zh) * | 2017-12-14 | 2018-07-10 | 北京奇艺世纪科技有限公司 | 一种数据查询方法和装置 |
CN110727565A (zh) * | 2018-07-16 | 2020-01-24 | 普天信息技术有限公司 | 一种网络设备平台信息收集方法及系统 |
CN110727565B (zh) * | 2018-07-16 | 2023-06-23 | 普天信息技术有限公司 | 一种网络设备平台信息收集方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN106933577B (zh) | 2020-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7062681B2 (en) | Method and system for generically reporting events occurring within a computer system | |
CN101494573B (zh) | 一种故障的诊断方法、系统和设备 | |
CN104050080B (zh) | 用户态调试linux内核的方法及系统 | |
WO2020206905A1 (zh) | 代码段保护方法、装置、计算机设备和存储介质 | |
CN106933577A (zh) | 基于Python实现的查询软件平台控制块的方法及系统 | |
CN108965293B (zh) | 报文解析方法和装置、电子设备 | |
US20230267057A1 (en) | Ipmi command processing method and system for bmc, and device and medium | |
CN108334614A (zh) | 一种数据更新方法、系统及存储介质 | |
CN105721451B (zh) | 一种可拓展的Modbus协议解析方法及装置 | |
CN109582391A (zh) | 一种基于xml的设备树配置方法 | |
CN110830500B (zh) | 网络攻击追踪方法、装置、电子设备及可读存储介质 | |
CN115912287A (zh) | 继电保护设备的参数配置方法及装置、存储介质、终端 | |
CN113495915A (zh) | 一种物联网设备的信息处理方法、装置及云端服务器 | |
CN110971540B (zh) | 一种数据信息的传输方法、装置、交换机及控制器 | |
CN107357792B (zh) | 一种数据解析的方法和装置 | |
CN114518881A (zh) | 一种页面生成方法、系统及存储介质 | |
CN109471763A (zh) | 抓取NVME硬盘trace的方法、装置、设备及系统 | |
WO2024108940A1 (zh) | 一种性能监管方法、装置、系统、设备和介质 | |
CN106909435A (zh) | 一种网络安全设备命令行的解析方法和装置 | |
CN111988343A (zh) | 一种远程设定规则并监测工业网络入侵的系统及方法 | |
CN110795350A (zh) | 一种risc-v处理器的可控跟踪调试方法及系统 | |
US10038604B2 (en) | Processing method and apparatus for signaling tracing | |
CN111863162A (zh) | 一种可自定义编控的不良事件上报方法 | |
CN111314116A (zh) | 一种管理网络设备的协议方法及装置 | |
CN114466046B (zh) | 一种数据转发方法及电源模块 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |