[发明专利]一种仿真工具的C语言单步调试实现方法无效
| 申请号: | 200910243482.2 | 申请日: | 2009-12-23 |
| 公开(公告)号: | CN102110046A | 公开(公告)日: | 2011-06-29 |
| 发明(设计)人: | 韩磊 | 申请(专利权)人: | 北京中电华大电子设计有限责任公司 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36 |
| 代理公司: | 暂无信息 | 代理人: | 暂无信息 |
| 地址: | 100102 北京市朝阳*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 仿真 工具 语言 调试 实现 方法 | ||
技术领域
本技术主要应用于智能卡软件开发仿真调试工具领域。
背景技术
汇编和C是目前智能卡软件开发使用的两种主要编程语言,由于C语言的可读性强、可移植性好而得到广泛应用。但C语言相对汇编语言要复杂的多,给仿真调试工具的开发增加了不少困难,与汇编语言相比较,C语言的一个单步调试命令(包括单步进入Step In、单步跨越Step Over),对应于汇编语言会执行若干条指令,而且其中还可能有跳转分支,不同的顺序执行指令和跳转分支指令相结合,使得C语言的调试非常复杂。
发明内容
本发明首先由仿真器实现基本调试命令,然后由编译器对程序代码解释生成代码行/程序地址对应表以及跳转表,最后由IDE实现具体调试逻辑。
仿真器实现调试命令如下:
Step In:单步,进入函数;
Step Over:单步,跳过函数;
Run to:执行到具体一个程序代码地址。
另外,硬件有两种状态running和stop,在调试过程中需要返回给IDE。
编译器生成的代码行/程序地址对应表内容包括:
FileName:代码所在文件;
LineIndex:代码所在行;
LineAddressRange:代码地址范围,包括起始地址StartAddress和结束地址EndAddress。
IDE根据这些信息来实现调试逻辑,并将当前调试行显示给用户。
跳转表内容包括:
InsName:跳转指令名称;
AsmFile:*.C文件编译生成的中间汇编文件名;
AsmLine:对应中间汇编文件的行号;
InsAddr:跳转指令所在地址。
本发明用来解决C语言程序单步调试的问题。方案主要由两方面构成:1)通过将汇编单步命令Step In/Step Over和运行指定地址Run to命令相结合,来处理C语言代码行地址问题;2)通过仿真器状态控制,来确定何时完成一次单步调试。使用该方案的好处是,除了可以支持C语言调试外,也能较好的兼容汇编语言调试。
附图说明
图1:C语言程序单步调试逻辑流程图
图2:仿真器控制逻辑流程图
具体实施方式
1、C语言程序单步调试行地址处理方法
对于汇编语言来说,由于每一行代码就对应着一条汇编语句,所以很容易处理,直接发送Step In/Step Over命令即可。
然而,对于C语言,每一行代码可能对应多条汇编语句,并且这多条汇编语句可能不连续,甚至存在多个跳转语句,如何跳出该行C代码只有执行时才能确定。因此,不能简单的将调试命令一对一的翻译,而需要另行建立一套逻辑方法来处理。
详细流程步骤如下:
1)获取当前程序指针PC和当前调试代码行地址范围AddrRange,转入步骤2);
2)比较当前程序指针PC和当前调试代码行地址范围AddrRange,若PC在AddrRange范围内转入步骤3),否则转入步骤4);
3)直接发送Step In/Step Over单步命令,转入步骤9);
4)查找跳转地址表,找出距离当前程序PC最近的跳转地址JmpAddr,转入步骤5);
5)比较跳转地址JmpAddr和代码行地址范围AddrRange,若JmpAddr在AddrRange范围内转入步骤6),否则转入步骤7);
6)Run to地址设置为JmpAddr,转入步骤8);
7)Run to地址设置为AddrRange的结束地址,转入步骤8);
8)发送Run to命令,转入步骤9);
9)结束本次调试。
2、对仿真器状态的控制方法
使用两个线程实现对仿真器状态的控制:
●主线程,负责给仿真器发送调试命令,启动监视线程;
●监视线程,监测到仿真器是否处于停止状态。如果仿真器停止,则判断是否需要重复当前调试过程。如果不需要则向主窗口发送仿真器停止的消息,否则重复当前调试过程。
判断是否重复当前调试过程的依据是:当前光标所在代码行与调试程序地址所在代码行是否相同。如果相同,则需要重复调试过程;如果不同,则发送停止消息。
详细流程步骤如下:
1)进入主线程,并且调试窗口为静止状态,转入步骤2);
2)启动监视线程,监视线程启动成功转入步骤3),否则转入步骤8);
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京中电华大电子设计有限责任公司,未经北京中电华大电子设计有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910243482.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:连杆式开关模装置
- 下一篇:废旧塑料电动分离设备





