CN101751321A - 一种动态可视化查看变量的实现方法及系统 - Google Patents
一种动态可视化查看变量的实现方法及系统 Download PDFInfo
- Publication number
- CN101751321A CN101751321A CN200810241658A CN200810241658A CN101751321A CN 101751321 A CN101751321 A CN 101751321A CN 200810241658 A CN200810241658 A CN 200810241658A CN 200810241658 A CN200810241658 A CN 200810241658A CN 101751321 A CN101751321 A CN 101751321A
- Authority
- CN
- China
- Prior art keywords
- variable
- information
- visual
- analytical function
- implementation method
- 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
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种动态可视化查看变量的实现方法及系统,所述系统包括解析库、设计态模块与运行态模块,所述设计态模块与所述解析库通信连接,所述解析库与所述运行态模块通信连接;根据变量信息为变量配置可视化解析函数并将变量信息与其可视化解析函数储存到解析库中;从所述解析库中调取变量信息与其可视化解析函数,并运用该可视化解析函数对该变量进行解析;将该变量解析后的字符串信息发送到查看终端。本发明通过配置可视化解析函数对变量进行解析,大大提高了查看变量的效率,增加了查看数据的灵活性,尤其是采用一个可视化解析函数仅解析一种类型变量的方式,进一步提高了查看变量的稳定性。
Description
技术领域
本发明涉及嵌入式系统或非嵌入式系统中在运行过程动态观察并可视化查看变量的方法及系统,尤其涉及一种动态可视化查看变量的实现方法及系统。
背景技术
现有技术中的嵌入式系统一般通过查看变量的特征数据来分析、解决问题,这些特征数据用的比较多的是全局变量信息与实例数据区信息,其中,全局变量信息为系统在运行过程中始终存在的变量信息,实施例数据信息为该变量是在运行过程动态产生的但运行完成后自动销毁的变量信息,也可以称为运行态变量信息。所以系统通过观察特征变量与实例数据信息进行调试、定位问题时非常有用,目前最常见的两种常规操作为:
第一种,系统通过搭建调试环境,结合编译时的镜像文件、符号表等,设置断点进行跟踪,并分析一些特征数据来实现问题的定位。
第二种,系统通过后台工具指定起始地址、变量长度,前台硬拷贝传到后台,然后再由后台结合数据类型来解析分析具体数据,从而达到定位问题的目的。
上述两种解决方案各有优点,第一种方案由于直接解析本地数据区,使得数据真实而快捷;第二种方案由于是将数据在后台解析,能为数据关联分析提供丰富的可视化功能。但是上述两种方案也存在很大的缺陷,例如第一种方案在正式版本系统中基本上是不允许采用搭建调试环境来测试定位问题,而且基于版本文件大小和效率等的考虑,发布版本中的符号表信息是不完全的,所以作用范围仅适用于实验室环境条件下;在第二种方案中关于结构中带结构指针的定义,后台无法针对该指针部分来做扩展解析,并且若指定的长度较长,则其拷贝内存操作占用的时间较长,对前台性能的影响较大,尤其是需要前台与后台保证数据结构的一致性,从而给系统维护带来了极大的困难。由此可见,现有技术有待于更进一步的发展。
发明内容
本发明为解决上述现有技术中的缺陷提供一种动态可视化查看变量的实现方法及系统,通过配置相应函数对变量进行处理,以提高查看变量的效率,增加查看变量的灵活性,提高维护系统的便捷性。
为解决上述技术问题,本发明方案包括:
一种动态可视化查看变量的实现方法,包括以下步骤:
A、根据变量信息为变量配置可视化解析函数并将变量信息与其可视化解析函数储存到解析库中;
B、从所述解析库中调取变量信息与其可视化解析函数,并运用该可视化解析函数对该变量进行解析;
C、将该变量解析后的字符串信息发送到查看终端。
所述的实现方法,其中,所述步骤A中的变量信息包括变量的地址信息与类型信息。
所述的实现方法,其中,所述步骤A还包括:变量的地址信息为固定状态,则通过静态函数将变量的地址信息注册到地址维护表中。
所述的实现方法,其中,所述步骤A还包括:变量的地址信息在运行时确定时,则通过动态函数将变量的地址信息注册到地址维护表中。
所述的实现方法,其中,所述步骤A中还包括:根据变量的类型信息为每种类型的变量配置一个可视化解析函数。
所述的实现方法,其中,可视化解析函数与变量的类型一一对应,且一个可视化解析函数仅解析一种类型变量。
所述的实现方法,其中,在所述步骤A与所述步骤B之间还包括以下步骤:
A11、根据输入的变量ID调用注册函数将变量ID、变量的地址信息与类型信息以及其可视化解析函数注册到注册表中。
所述的实现方法,其中,所述步骤A还包括:
A21、通过词法解析器生成工具与编译器生成工具开发扫描工具;
A22、使用所述扫描工具扫描变量文件得到该变量的可视化解析函数。
所述的实现方法,其中,所述步骤C中的所述查看终端使用的程序为远程登录程序或命令解释程序。
所述实现方法的系统,包括解析库,所述解析库用于储存变量信息及其相关数据,其中,所述系统还包括设计态模块与运行态模块,所述设计态模块与所述解析库通信连接,所述解析库与所述运行态模块通信连接;
所述设计态模块用于根据变量信息为变量配置可视化解析函数并将该变量信息与其可视化函数发送到所述解析库中;
所述运行态模块用于从所述解析库中调取相关数据后运用可视化解析函数对变量进行解析,并将解析后的变量发送到查看终端。
本发明提供了一种动态可视化查看变量的实现方法及系统,通过配置可视化解析函数对变量进行解析,大大提高了查看变量的效率,增加了查看数据的灵活性,尤其是采用一个可视化解析函数仅解析一种类型变量的方式,进一步提高了查看变量的稳定性,实现了对变量动态查看的可视化。
附图说明
图1是本发明中变量注册表内对应关系的结构示意图;
图2是本发明中动态可视化查看变量系统结构及其工作流程的示意图;
图3是本发明中设计态模块工作的流程示意图;
图4是本发明中运行态模块工作的流程示意图。
具体实施方式
以下将结合附图,对本发明中各较佳实施例进行较为详尽的说明。
本发明提供的一种动态可视化查看变量的实现方法及系统,通过配置可视化解析函数对变量进行解析,大大提高了查看变量的效率,增加了查看变量的灵活性。本发明关键解决的问题为:如何动态解析变量即如何动态解析全局变量或实施例数据变量;如何可视化显示变量解析后的值信息。无论是全局变量还是实例数据区变量,若需要在运行期间观察其具体的值信息,给定变量的形式一般是以下两种:第一种,给出变量地址信息的同时给出变量类型信息,对指定地址的内容作类型强转得到其值信息;第二种,给出变量在运行期间的符号表中的名称,由于符号表中的每个变量类型是固定的,而在运行期间某段时间内其地址也是固定的,所以很容易获得该变量的详细信息。在第二种方案中,符号表本身本质上也是符号化了的变量地址与变量类型,因此知道了变量的地址信息与类型信息就能很容易查看变量的具体信息了,所以两种变量类型的解析变量共同点就是在运行期间需要知道变量在内存中的变量地址信息与变量类型信息。对于地址信息,本发明提出了采用静态注册和动态注册的两种方式来实现,即对于类似于全局变量固定地址的变量采用静态函数注册的方式将变量地址信息注册到地址维护表中,而对于实例数据区等运行期地址可变的变量地址信息,可以在运行期通过应用动态函数注册的方式将变量地址信息注册到地址维护表中;即静态注册信息与动态注册信息统一放在变量的地址维护表中进行维护,其具体结构如图1所示的。
另外本发明采用变量类型信息函数化的方法,有效的解决了变量类型的问题,例如C/C++语言中数据类型包括基本类型、构造类型和对象,本发明针对每种变量类型生成一个可视化解析函数,一个可视化解析函数唯一解析一个变量类型,且其关系为一一对应。
在实现过程中基本类型是比较容易实现的,但是对于结构体、共同体、枚举类型以及对象等复杂的构造类型,由于其是不同基本类型数据变量的集合体,所以对复杂构造类型变量的解析就是依次对其中每个变量进行解析。为了详细说明实现对复杂构造类型变量的解析过程,现仅以结构体类型为例说明本发明的解析思想,其他复杂构造类型变量的解析过程与此相似,在此不在赘述。下面是一个结构体类型A的解析过程:
typedef struct tagA
{
int a; /*以int代表一个基本类型的处理*/
struct B b;/*B是一个结构体类型*/
enum C c;/*C是一个枚举类型*/
}A;
根据结构体A的定义,唯一生成下面的可视化解析函数:
void TDRNC_ShowA(char*name,struct A*pValue)
{
char cTempName[512]={0};
/*解析基本数据类型成员a*/
sprintf(cTempName,“%s.a=”,name);
TDRNC_ShowInt(cTempName,pValue->a);
/*解析结构体成员b*/
sprintf(cTempName,“%s.b=”,name);
TDRNC_ShowB(cTempName,&pValue->b);
/*解析枚举类型成员c*/
sprintf(cTempName,“%s.c=”,name);
TDRNC_ShowC(cTempName,&pValue->c);
}
由上可以看到,结构体成员无论是基本数据类型还是构造类型,都统一看待,并默认每个成员都有对应的可视化解析函数实施解析,如上面的函数TDRNC_ShowInt、TDRNC_ShowB和TDRNC_ShowC,因为每个数据类型都生成一个可视化结构体解析函数,所以TDRNC_ShowB和TDRNC_ShowC就一定存在;而对于基本数据类型,如对上述int类型变量的解析,需要提供基本的解析库函数,但是由于基本数据类型比较少,可以手动实现,仅以对上述int类型变量进行解析为例予以说明,其他基本类型变量的解析与此相似,在此不再赘述,其具体过程如下:
void TDRNC_ShowInt(char*name,int value)
{
printf(″%s=%d\n″,name,value);
}
由此可见,对所有变量类型解析实施函数化,并通过函数注册变量的地址信息,有效的解决了对变量的动态解析。如图1所示的,由于注册表本身是动态的,所以可以看出,对于变量n,在变量地址n上调用函数n,就可以实现对具有类型n的变量n进行动态解析。
对于本发明的第二个关键问题,即对变量进行可视化查看,是在解析过程已经实现的前提下进行,因为对于每个变量,都解析成了如下的可视化字符串形式:
变量×变量=值。
并且可视化解析函数会自动调用下级成员变量的解析过程,所以只要对某变量地址调用可视化解析函数对变量进行解析,就会实现整个变量的可视化解析。若变量不是基本数据类型,则采用Lex即词法解析器生成工具与YACC即编译器生成工具完成这项复杂的工作;如图2所示的,将上述的整个过程分成设计态过程与运行态过程两个过程,其中设计态过程利用Lex与YACC开发扫描工具,对变量类型所在的H文件进行词法与语法分析,生成一系列可视化解析函数;而运行态过程根据注册表中的信息对全局变量或实例数据变量调用相应可视化解析函数进行解析,并将该全局变量或实例数据变量解析后的字符串值信息发送到查看终端。通过上述改进后,大大提高了查看变量的效率,增加了查看变量的灵活性。
本发明提供的系统包括解析库202,所述解析库202用于储存变量信息及其相关数据,并且所述系统还包括设计态模块201与运行态模块203,所述设计态模块201与所述解析库202通信连接,所述解析库202与所述运行态模块203通信连接;所述设计态模块201用于根据变量信息为变量配置可视化解析函数并将该变量信息与其可视化函数发送到所述解析库202中进行储存;所述运行态模块203用于从所述解析库202中调取相关数据后运用可视化解析函数对变量进行解析,并将解析后的变量发送到查看终端。本发明系统实现其方法时主要包括以下步骤:
a、所述设计态模块201通过词法解析器生成工具与编译器生成工具开发扫描工具,并使用所述扫描工具扫描变量文件得到该变量的可视化解析函数;
b、所述设计态模块201根据变量信息为变量配置可视化解析函数并将变量信息与其可视化解析函数储存到所述解析库202中;并且变量信息包括变量的地址信息与类型信息,当变量为全局变量时,则通过静态函数将变量的地址信息注册到地址维护表中;当变量为实施例数据变量,则通过动态函数将变量的地址信息注册到地址维护表中;所述设计态模块201根据变量的类型信息为每种类型的变量配置一个可视化解析函数,并且可视化解析函数与变量的类型一一对应,一个可视化解析函数仅解析一种类型的变量;
c、用户输入变量ID,则所述运行态模块203根据输入的变量ID调用注册函数将变量ID、变量的地址信息与类型信息以及其可视化解析函数注册到注册表中;
d、所述运行态模块203从所述解析库202中调取变量信息与其可视化解析函数,并运用该可视化解析函数对该变量进行解析;
e、所述运行态模块203将该变量解析后的可视化字符串信息即值信息发送到查看终端进行显示;并且该查看终端使用的程序可以为Telnet即远程登录程序,也可以是标准Shell即命令解释程序或者其他程序。通过上述描述可知,本发明提高了查看变量的稳定性,实现了对变量动态查看的可视化。
为了更进一步阐述本发明,现将设计态过程与运行态过程分解开来进行描述。如图3所示的,设计态过程主要包括以下步骤:
步骤301:所述设计态模块201通过Lex与YACC开发扫描工具,并实现将包含类型定义的.h文件转化为可视化解析函数的.c;
步骤302:所述设计态模块201所述扫描工具扫描.h文件,得到实现可视化解析函数的.c文件;
步骤303:所述设计态模块201对于全局变量,则在注册表中登记变量ID(一般是变量名如g_tCoreData)、变量地址(一般形式如&g_tCoreData)与可视化解析函数(如假设变量g_tCoreData类型为T_CoreData,则函数为TDRNC_ShowCoreData);
步骤304:所述设计态模块201将解析函数.c文件与其它.h文件、.c文件一起编译,生成包含解析库的版本文件储存在所述解析库202中;至此所述设计态过程结束。
如图4所示的,运行态过程主要包括以下步骤:
步骤401:所述运行态模块203从所述解析库202中调用注册函数将实例数据信息即变量ID、变量地址信息与其可视化解析函数注册到注册表中;
步骤402:用户通过Telnet或其他查看工具登陆到运行版本的机器上,输入需要查看的变量ID;
步骤403:所述运行态模块203在注册表中通过变量ID找到对应的注册项,取出变量地址信息与其可视化解析函数;
步骤404:所述运行态模块203调用该可视化解析函数对该变量进行解析,并解析出其具体的值信息;
步骤405:所述运行态模块203将该变量解析完毕的字符串信息传回到查看终端进行显示。通过上述描述可知,本发明不仅可以观察全局变量,还可以观察实例数据、进程数据等一些运行动态产生的变量;并且后台终端查看工具比较独立,一旦版本生成完成,则后台查看工具可以完全独立于嵌入式代码,提高了查看的稳定性。
综上所述,本发明提供的一种动态可视化查看变量的实现方法及系统,通过配置可视化解析函数对变量进行解析,不仅可以观察全局变量,还可以观察实例数据、进程数据等一些运行动态产生的变量;并且后台终端查看工具比较独立,一旦版本生成完成,则后台查看工具可以完全独立于嵌入式代码,大大提高了查看的稳定性,提高了查看变量的效率,增加了查看数据的灵活性,尤其是采用一个可视化解析函数仅解析一种类型变量的方式,实现了对变量动态查看的可视化。并且本发明是对变量原始地址就地进行解析,不存在内存拷贝等操作,也保证了解析的可靠性和稳定性;另外,本发明具有很好的扩充性和适应性,对于解析函数稍加改造,即可实现对变量的精确查看,例如可以查看某结构体下面的某个变量的值信息;本发明所说的全局变量其实代表所有设计态就可以确定地址信息的所有变量,而实例数据变量代表所有只有在运行期才能确定地址信息的所有变量,所以本法明不仅在嵌入式系统中可以实现,在其它非嵌入式系统中也同样可以适用,具有普遍的适用性。
应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权利要求所保护的范围情况下,还可以做出替换、简单组合等多种变形,这些均落入本发明的保护范围之内,本发明的请求保护范围应以所附权利要求为准。
Claims (10)
1.一种动态可视化查看变量的实现方法,包括以下步骤:
A、根据变量信息为变量配置可视化解析函数并将变量信息与其可视化解析函数储存到解析库中;
B、从所述解析库中调取变量信息与其可视化解析函数,并运用该可视化解析函数对该变量进行解析;
C、将该变量解析后的字符串信息发送到查看终端。
2.根据权利要求1所述的实现方法,其特征在于,所述步骤A中的变量信息包括变量的地址信息与类型信息。
3.根据权利要求2所述的实现方法,其特征在于,所述步骤A还包括:变量的地址信息为固定状态,则通过静态函数将变量的地址信息注册到地址维护表中。
4.根据权利要求2所述的实现方法,其特征在于,所述步骤A还包括:变量的地址信息在运行时确定时,则通过动态函数将变量的地址信息注册到地址维护表中。
5.根据权利要求2所述的实现方法,其特征在于,所述步骤A中还包括:根据变量的类型信息为每种类型的变量配置一个可视化解析函数。
6.根据权利要求5所述的实现方法,其特征在于,可视化解析函数与变量的类型一一对应,且一个可视化解析函数仅解析一种类型变量。
7.根据权利要求2所述的实现方法,其特征在于,在所述步骤A与所述步骤B之间还包括以下步骤:
A11、根据输入的变量ID调用注册函数将变量ID、变量的地址信息与类型信息以及其可视化解析函数注册到注册表中。
8.根据权利要求1或2所述的实现方法,其特征在于,所述步骤A还包括:
A21、通过词法解析器生成工具与编译器生成工具开发扫描工具;
A22、使用所述扫描工具扫描变量文件得到该变量的可视化解析函数。
9.根据权利要求1所述的实现方法,其特征在于,所述步骤C中的所述查看终端使用的程序为远程登录程序或命令解释程序。
10.一种用于权利要求1所述实现方法的系统,包括解析库,所述解析库用于储存变量信息及其相关数据,其特征在于,所述系统还包括设计态模块与运行态模块,所述设计态模块与所述解析库通信连接,所述解析库与所述运行态模块通信连接;
所述设计态模块用于根据变量信息为变量配置可视化解析函数并将该变量信息与其可视化函数发送到所述解析库中;
所述运行态模块用于从所述解析库中调取相关数据后运用可视化解析函数对变量进行解析,并将解析后的变量发送到查看终端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102416586A CN101751321B (zh) | 2008-12-18 | 2008-12-18 | 一种动态可视化查看变量的实现方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102416586A CN101751321B (zh) | 2008-12-18 | 2008-12-18 | 一种动态可视化查看变量的实现方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101751321A true CN101751321A (zh) | 2010-06-23 |
CN101751321B CN101751321B (zh) | 2012-07-18 |
Family
ID=42478328
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008102416586A Expired - Fee Related CN101751321B (zh) | 2008-12-18 | 2008-12-18 | 一种动态可视化查看变量的实现方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101751321B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018165831A1 (zh) * | 2017-03-13 | 2018-09-20 | 深圳市鑫君特智能医疗器械有限公司 | 一种监测程序变量值的方法及系统 |
CN108735029A (zh) * | 2018-07-03 | 2018-11-02 | 阳江核电有限公司 | 一种核电厂机组模拟机的可视化展示方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3903514B2 (ja) * | 1997-02-27 | 2007-04-11 | 富士通株式会社 | 未定義変数検出の最適化コンパイラ装置 |
CN100472987C (zh) * | 2003-07-28 | 2009-03-25 | 中兴通讯股份有限公司 | 通信系统程序故障检测方法 |
CN101256532A (zh) * | 2008-04-07 | 2008-09-03 | 中兴通讯股份有限公司 | 一种嵌入式系统中变量实时查看的方法 |
-
2008
- 2008-12-18 CN CN2008102416586A patent/CN101751321B/zh not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018165831A1 (zh) * | 2017-03-13 | 2018-09-20 | 深圳市鑫君特智能医疗器械有限公司 | 一种监测程序变量值的方法及系统 |
CN108735029A (zh) * | 2018-07-03 | 2018-11-02 | 阳江核电有限公司 | 一种核电厂机组模拟机的可视化展示方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101751321B (zh) | 2012-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100442234C (zh) | 用于嵌入式系统的软件包构建方法和系统 | |
US7900198B2 (en) | Method and system for parameter profile compiling | |
US9086899B2 (en) | Loading and debugging method and debugging system thereof | |
US20020198868A1 (en) | System and method for specification tracking in a Java compatibility testing environment | |
US20180157479A1 (en) | Cloud service framework for toolkit deployment | |
US8776024B2 (en) | Software application fine-tuning method, system, and corresponding computer program product | |
CN101261579A (zh) | 一种实现VBScript语言跨平台应用的方法 | |
CN100351785C (zh) | 嵌入式系统的调试方法 | |
CN1504881A (zh) | 爪哇执行设备和爪哇执行方法 | |
CN113110859A (zh) | 一种嵌入式终端远程在线开发系统 | |
CN104134039A (zh) | 病毒查杀方法、客户端、服务器以及病毒查杀系统 | |
CN101071385A (zh) | 编译方法、调试方法、编译程序和调试程序 | |
CN109117368A (zh) | 一种接口测试方法、电子设备及存储介质 | |
CN103885873A (zh) | 一种自动化集成测试的方法 | |
CN101458633B (zh) | 通过脚本程序访问宿主程序的方法及其系统和装置 | |
US8533683B2 (en) | Stack walking enhancements using sensorpoints | |
CN104899070B (zh) | 设备命令行的实现方法、系统与装置 | |
CN102063367B (zh) | 针对当机程序的离线分析方法及装置 | |
CN103823665A (zh) | 一种sdk活跃度分析方法、网络服务器及系统 | |
CN101751321B (zh) | 一种动态可视化查看变量的实现方法及系统 | |
US8359585B1 (en) | Instrumentation ATS/TPS mitigation utilizing I/O data stream | |
CN100362817C (zh) | 软件模块的测试方法 | |
CN113688031B (zh) | 一种基于字节码增强技术的测试定位方法 | |
CN101256532A (zh) | 一种嵌入式系统中变量实时查看的方法 | |
CN114115832A (zh) | 一种物联网嵌入式设备与云平台通信协议实现方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120718 Termination date: 20191218 |