[发明专利]程序的调试方法及装置有效
申请号: | 201911396063.2 | 申请日: | 2019-12-30 |
公开(公告)号: | CN111209193B | 公开(公告)日: | 2023-09-22 |
发明(设计)人: | 王一诺 | 申请(专利权)人: | 北京水滴科技集团有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京中强智尚知识产权代理有限公司 11448 | 代理人: | 黄耀威 |
地址: | 100102 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 程序 调试 方法 装置 | ||
1.一种程序的调试方法,其特征在于,包括:
通过第一操作系统的CPU模拟器加载目标调试程序,其中,所述第一操作系统运行在x86构架的第一设备,所述目标调试程序的应用环境为第二操作系统,所述第二操作系统运行在进阶精简指令集机器ARM构架的第二设备;
在所述第一设备中分配所述目标调试程序的内存空间;
在所述第一设备中运行所述目标调试程序,并触发所述目标调试程序的中断处理程序;
通过所述中断处理程序调试所述目标调试程序,其中,包括:
读取所述目标调试程序当前执行的指令代码;
判断所述指令代码的内存地址与代码地址是否相同;
若内存地址与代码地址相同,暂停执行所述目标调试程序,接收外部调试指令;若内存地址与代码地址不相同,判断所述指令代码的代码地址是否存在单步执行断点,若所述代码地址存在单步执行断点,暂停执行所述目标调试程序,接收外部调试指令,其中,所述外部调试指令用于指示针对所述目标调试程序的调试方式;
根据所述外部调试指令控制所述目标调试程序。
2.根据权利要求1所述的方法,其特征在于,在所述第一设备中运行所述目标调试程序,并触发所述的目标调试程序的中断处理程序,包括:
检测所述CPU模拟器针对所述目标调试程序的执行操作;
在所述CPU模拟器执行所述目标调试程序的任一代码指令时,触发软件中断信号;
响应所述软件中断信号,执行回调函数的指定代码,其中,所述指定代码包括所述中断处理程序。
3.根据权利要求1所述的方法,其特征在于,在所述第一设备中分配所述目标调试程序的内存空间包括:
获取所述目标调试程序的文件地址,其中,所述文件地址为相对地址;
基于所述第一设备的存储器的寻址空间和所述文件地址计算所述目标调试程序的重定向地址,其中,所述重定向地址为绝对地址;
根据所述绝对地址在所述第一设备中分配所述目标调试程序的内存空间。
4.根据权利要求1所述的方法,其特征在于,通过所述中断处理程序调试所述目标调试程序包括:
读取所述目标调试程序当前执行的指令代码;
解析所述指令代码,以确定所述指令代码的指令类型;
若所述指令类型为系统调用指令,对所述目标调试程序执行系统调试;若所述指令类型为断点指令,对所述目标调试程序执行断点调试。
5.根据权利要求1所述的方法,其特征在于,根据所述外部调试指令控制所述目标调试程序包括:
若所述外部调试指令为单步执行指令,以所述指令代码为起始位置逐行执行所述目标调试程序;
若所述外部调试指令为步入执行指令,进入所述指令代码的调用函数,并执行所述调用函数;
若所述外部调试指令为停止指令,停止执行所述目标调试程序;
若所述外部调试指令为运行指令,继续执行所述目标调试程序。
6.根据权利要求1所述的方法,其特征在于,在读取所述目标调试程序当前执行的指令代码之后,所述方法还包括:
对所述指令代码进行反汇编翻译,以将所述指令代码从机器语言转换为汇编语言;
在所述第一设备的用户界面显示所述汇编语言。
7.根据权利要求1所述的方法,其特征在于,在所述第一设备中运行所述目标调试程序之前,所述方法还包括:
确定所述第二设备的CPU的地址宽度;
以所述地址宽度为单位,将所述目标调试程序的指令代码缓存至所述CPU模拟器中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京水滴科技集团有限公司,未经北京水滴科技集团有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911396063.2/1.html,转载请声明来源钻瓜专利网。