[发明专利]一种嵌入式程序动态分配内存的变量调试方法无效
申请号: | 201110396566.7 | 申请日: | 2011-12-03 |
公开(公告)号: | CN103136107A | 公开(公告)日: | 2013-06-05 |
发明(设计)人: | 冯亚东;陈宏君;周强;刘克金;徐东方;赵天恩 | 申请(专利权)人: | 南京南瑞继保电气有限公司;南京南瑞继保工程技术有限公司 |
主分类号: | G06F12/02 | 分类号: | G06F12/02 |
代理公司: | 南京天翼专利代理有限责任公司 32112 | 代理人: | 陈建和 |
地址: | 211102 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 嵌入式 程序 动态分配 内存 变量 调试 方法 | ||
技术领域
本发明属于程序调试范畴,具体涉及嵌入式程序动态分配内存的变量调试方法。
背景技术
在软件的开发维护过程中,软件调试是很重要的一个步骤,通过调试来诊断解决程序问题。在上位机(PC机)环境运行的程序,由于有集成开发调试的人机界面工具,可以方便地进行单步调试或输出中间运行信息。嵌入式软件由于是独立运行在装置中,一般是通过仿真器连接调试线,进行调试,这种模式需要人为预先知道变量的地址,并且装置是在STOR(停止实时运行)的模式下才能支持仿真器调试。目前尚且没有在运行模式下调试动态分配内存的方法。
调试一个变量,首先需要知道该变量的地址。编译器在编译程序时,对于全局声明的变量,可以预先静态分配地址,形成全局变量的MAP文件,通过分析该文件,可获取全局变量名和地址信息,从而调试全局变量。随着程序规模增加,全局数据空间有限,无法把所有变量都放到全局区,并且有些数据需要根据具体情况动态分配。动态分配内存的变量是在程序构造函数中申请的,这些变量在程序运行前地址是未知的,由于CPU运行的是二进制指令,在运行过程中没有地址和变量名的对应关系,无法用传统的仿真器调试方法来调试嵌入式程序动态分配内存的变量在运行模式下的实际值。
发明内容
本发明的目的是:提供一种嵌入式程序动态分配内存的变量调试方法。通过分析管理结构体变量信息,形成相对地址调试表,实现了嵌入式程序动态分配内存的变量调试,提高了程序开发和调试的效率。
本发明的技术方案由三部分组成,第一部分为嵌入式程序结构体注册接口实现;第二部分为上位机设有对嵌入式程序结构体调试的程序,分析嵌入式程序结构体信息,形成调试表;第三部分为变量调试的通信协议定义。
第一部分,开发了嵌入式程序的调试模块,在嵌入式程序中增加调试模块,提供嵌入式程序结构体注册函数,通过调用该函数,往调试模块注册动态分配结构体的类型名、实例名、结构体实例首地址;并定义了registerComponent接口供嵌入式程序结构体构造程序调用;该接口可以记录每个动态分配的嵌入式程序结构体类型名、实例名、首地址信息;通过搜集嵌入式程序的结构体的类型名、实例名、结构体实例首地址构成的结构体实例信息,形成结构体信息表;
第二部分,开发上位机调试模块程序;上位机软件计算分析结构体信息,形成结构体变量相对偏移地址调试表,并将地址调试表文件下载给嵌入式装置;该模块通过分析指定目录下的程序头的文件,根据CPU的字长和对齐设置和不同变量类型的存储字节设置,分析结构体内每个成员变量的数据类型,进行条件编译预处理、词法扫描、类型识别、语义处理和数据类型属性等步骤,形成结构体定义语义树,以递归下降分析算法计算出结构体内每个变量的大小、相对偏移地址。以结构体类型名为单位形成调试信息表,并将调试表下载到嵌入式装置;结构体相对偏移地址表(调试表)包括的内容:结构体类型名、变量名、变量相对地址、变量类型;
第三部分,通过上位机程序和嵌入式程序的调试通信协议;用户在在上位机软件输入需要调试的层次变量名,上位机软件以层次变量名为关键字,通过自定义TCP应用层协议,下发需要调试的变量(调试表)即下发层次变量名(结构体实例名+变量名)给嵌入式程序。嵌入式程序在结构体信息表中获取结构体实例名的首地址和类型名,然后在调试表中查找到需要调试的变量名,获取相对偏移地址,结构体首地址与相对偏移地址之和就是变量的绝对地址,通过访问读取绝对地址的内存数据,可以通过网络、串口链路上送变量实际值、即得到变量的实际值,并上送给上位机软件解析报文内容,显示变量值。
本发明有益效果是:通过上位机程序和嵌入式程序的调试通信协议;用户在上位机软件输入需要调试的层次变量名,上位机软件读取程序头文件,分析数据结构体,计算每个成员变量相对偏移地址和数据类型信息,形成变量调试表,并下载到装置。装置软件在构造函数中记录动态申请的结构体实例首地址,并根据调试的层次变量名查询到相对地址,然后加上结构体首地址,得到每个成员变量的绝对地址,访问该地址的数据并上送给上位机显示。该方法打破了以往只能调试编译器静态分配的全局变量的局限,扩大了嵌入式程序的调试范围,提高了程序诊断效率。本发明实现了嵌入式程序在实时运行模式下调试动态分配内存,可以对程序的每个变量进行实时跟踪,可以快速定位运行工况下的程序问题,缩短了开发周期,也带来较好的经济效益。
附图说明
下面结合附图对本发明的具体实施方式作进一步详细的说明。
图1是结构体信息表原理图。
图2是调用结构体注册函数代码示例图。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京南瑞继保电气有限公司;南京南瑞继保工程技术有限公司,未经南京南瑞继保电气有限公司;南京南瑞继保工程技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110396566.7/2.html,转载请声明来源钻瓜专利网。
- 上一篇:高效节能脱硝除尘锅炉燃烧系统
- 下一篇:一种喷嘴结构