程序的调试方法及装置与流程

文档序号:20917501发布日期:2020-05-29 13:43阅读:208来源:国知局
程序的调试方法及装置与流程

本发明涉及计算机领域,尤其是一种程序的调试方法及装置。



背景技术:

相关技术中,调试器是基于cpu的中断机制实现的,因此进阶精简指令集机器(advancedriscmachine,arm)架构的调试器就需要相同架构的cpu,armcpu大多使用在移动设备和嵌入式设备上,现有的软件调试器(ida(交互式反汇编器(interactivedisassembler))、gdb等)都需要通过pc端连接相应的arm设备(如安卓设备)进行调试,操作步骤繁琐调试过程中存在限制,由于运行环境的差异,软件调试器无法模拟硬件中断信号,硬件中断信号由arm设备直接出发,进而导致调试环境复杂,无法在x86设备中直接调试arm设备的程序。

相关技术中的软件调试器都需要借助pc端连接设备,手机还需要进行root等权限获取操作,操作步骤繁琐费时,导致调试场景有限,调试效率低。

针对相关技术中存在的上述问题,目前尚未发现有效的解决方案。



技术实现要素:

为解决相关技术中不能在x86设备中直接调试arm设备的程序的技术问题,本发明实施例提供了一种程序的调试方法及装置。

根据本发明的一个实施例,提供了一种程序的调试方法,包括:通过第一操作系统的cpu模拟器加载目标调试程序,其中,所述第一操作系统运行在x86构架的第一设备,所述目标调试程序的应用环境为第二操作系统,所述第二操作系统运行在进阶精简指令集机器arm构架的第二设备;在所述第一设备中分配所述目标调试程序的内存空间;在所述第一设备中运行所述目标调试程序,并触发所述目标调试程序的中断处理程序;通过所述中断处理程序调试所述目标调试程序。

可选的,在所述第一设备中运行所述目标调试程序,并触发所述的目标调试程序的中断处理程序,包括:检测所述cpu模拟器针对所述目标调试程序的执行操作;在所述cpu模拟器执行所述目标调试程序的任一代码指令时,触发软件中断信号;响应所述软件中断信号,执行回调函数的指定代码,其中,所述指定代码包括所述中断处理程序。

可选的,在所述第一设备中分配所述目标调试程序的内存空间包括:获取所述目标调试程序的文件地址,其中,所述文件地址为相对地址;基于所述第一设备的存储器的寻址空间和所述文件地址计算所述目标调试程序的重定向地址,其中,所述重定向地址为绝对地址;根据所述绝对地址在所述第一设备中分配所述目标调试程序的内存空间。

可选的,通过所述中断处理程序调试所述目标调试程序包括:读取所述目标调试程序当前执行的指令代码;解析所述指令代码,以确定所述指令代码的指令类型;若所述指令类型为系统调用指令,对所述目标调试程序执行系统调试;若所述指令类型为断点指令,对所述目标调试程序执行断点调试。

可选的,通过所述中断处理程序调试所述目标调试程序包括:读取所述目标调试程序当前执行的指令代码;判断所述指令代码的内存地址与代码地址是否相同;若内存地址与代码地址相同,暂停执行所述目标调试程序,接收外部调试指令;若内存地址与代码地址不相同,判断所述指令代码的代码地址是否存在单步执行断点,若所述代码地址存在单步执行断点,暂停执行所述目标调试程序,接收外部调试指令,其中,所述外部调试指令用于指示针对所述目标调试程序的调试方式;根据所述外部调试指令控制所述目标调试程序。

可选的,根据所述外部调试指令控制所述目标调试程序包括:若所述外部调试指令为单步执行指令,以所述指令代码为起始位置逐行执行所述目标调试程序;若所述外部调试指令为步入执行指令,进入所述指令代码的调用函数,并执行所述调用函数;若所述外部调试指令为停止指令,停止执行所述目标调试程序;若所述外部调试指令为运行指令,继续执行所述目标调试程序。

可选的,在读取所述目标调试程序当前执行的指令代码之后,所述方法还包括:对所述指令代码进行反汇编翻译,以将所述指令代码从机器语言转换为汇编语言;在所述第一设备的用户界面显示所述汇编语言。

可选的,在所述第一设备中运行所述目标调试程序之前,所述方法还包括:确定所述第二设备的cpu的地址宽度;以所述地址宽度为单位,将所述目标调试程序的指令代码缓存至所述cpu模拟器中。

根据本发明的另一个实施例,提供了一种程序的调试装置,包括:加载模块,用于通过第一操作系统的cpu模拟器加载目标调试程序,其中,所述第一操作系统运行在x86构架的第一设备,所述目标调试程序的应用环境为第二操作系统,所述第二操作系统运行在进阶精简指令集机器arm构架的第二设备;分配模块,用于在所述第一设备中分配所述目标调试程序的内存空间;运行模块,用于在所述第一设备中运行所述目标调试程序,并触发所述目标调试程序的中断处理程序;调试模块,用于通过所述中断处理程序调试所述目标调试程序。

可选的,所述运行模块,具体用于:检测所述cpu模拟器针对所述目标调试程序的执行操作;在所述cpu模拟器执行所述目标调试程序的任一代码指令时,触发软件中断信号;响应所述软件中断信号,执行回调函数的指定代码,其中,所述指定代码包括所述中断处理程序。

可选的,所述分配模块,具体用于:获取所述目标调试程序的文件地址,其中,所述文件地址为相对地址;基于所述第一设备的存储器的寻址空间和所述文件地址计算所述目标调试程序的重定向地址,其中,所述重定向地址为绝对地址;根据所述绝对地址在所述第一设备中分配所述目标调试程序的内存空间。

可选的,所述调试模块,具体用于:读取所述目标调试程序当前执行的指令代码;解析所述指令代码,以确定所述指令代码的指令类型;若所述指令类型为系统调用指令,对所述目标调试程序执行系统调试;若所述指令类型为断点指令,对所述目标调试程序执行断点调试。

可选的,所述调试模块,具体用于:读取所述目标调试程序当前执行的指令代码;判断所述指令代码的内存地址与代码地址是否相同;若内存地址与代码地址相同,暂停执行所述目标调试程序,接收外部调试指令;若内存地址与代码地址不相同,判断所述指令代码的代码地址是否存在单步执行断点,若所述代码地址存在单步执行断点,暂停执行所述目标调试程序,接收外部调试指令,其中,所述外部调试指令用于指示针对所述目标调试程序的调试方式;根据所述外部调试指令控制所述目标调试程序。

可选的,所述调试模块用于根据所述外部调试指令控制所述目标调试程序时,具体用于:若所述外部调试指令为单步执行指令,以所述指令代码为起始位置逐行执行所述目标调试程序;若所述外部调试指令为步入执行指令,进入所述指令代码的调用函数,并执行所述调用函数;若所述外部调试指令为停止指令,停止执行所述目标调试程序;若所述外部调试指令为运行指令,继续执行所述目标调试程序。

可选的,所述调试模块在读取所述目标调试程序当前执行的指令代码之后,还用于:对所述指令代码进行反汇编翻译,以将所述指令代码从机器语言转换为汇编语言;在所述第一设备的用户界面显示所述汇编语言。

可选的,所述装置还包括:确定模块,用于在所述运行模块在所述第一设备中运行所述目标调试程序之前,确定所述第二设备的cpu的地址宽度;缓存模块,用于以所述地址宽度为单位,将所述目标调试程序的指令代码缓存至所述cpu模拟器中。

根据本发明的又一个实施例,还提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。

根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。

通过本实施例的方案,在x86构架的第一设备的cpu模拟器加载应用环境为arm构架的目标调试程序,然后在第一设备中分配目标调试程序的内存空间,在第一设备中运行目标调试程序,并触发目标调试程序的中断处理程序,通过中断处理程序调试目标调试程序,基于cpu模拟器提供虚拟的运行环境,模拟程序调试过程中的软硬件断点,在x86构架的调试设备上调试运行在arm构架上的程序时,不需要再连接arm构架的第二设备,解决了相关技术中不能在x86设备中直接调试arm设备的程序的技术问题,可以完全脱离真实设备进行调试,调试环境更加灵活,调试效率更高。

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

附图说明

构成说明书的一部分的附图描述了本发明的实施例,并且连同描述一起用于解释本发明的原理。

参照附图,根据下面的详细描述,可以更加清楚地理解本发明,其中:

图1是本发明实施例的一种程序的调试计算机的硬件结构框图;

图2是根据本发明实施例的一种程序的调试方法的流程图;

图3是本发明实施例的软件构架图;

图4是本发明实施例的调试运行流程图;

图5是根据本发明实施例的程序的调试装置的结构框图;

图6是本发明一个实施方式中的程序的调试装置的结构框图。

具体实施方式

现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。

同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。

以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。

对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。

本发明实施例可以应用于计算机系统/服务器,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与计算机系统/服务器一起使用的众所周知的计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统、大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。

计算机系统/服务器可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。

本申请实施例一所提供的方法实施例可以在移动终端、计算机、服务器或者类似的运算装置中执行。以运行在计算机上为例,图1是本发明实施例的一种程序的调试计算机的硬件结构框图。如图1所示,计算机10可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)和用于存储数据的存储器104,可选地,上述计算机还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述计算机的结构造成限定。例如,计算机10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。

存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的程序的调试方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(networkinterfacecontroller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(radiofrequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。

在本实施例中提供了一种程序的调试方法,图2是根据本发明实施例的一种程序的调试方法的流程图,如图2所示,该流程包括如下步骤:

步骤s202,通过第一操作系统的cpu模拟器加载目标调试程序,其中,第一操作系统运行在x86构架的第一设备,目标调试程序的应用环境为第二操作系统,第二操作系统运行在进阶精简指令集机器arm构架的第二设备;

本实施例的第一设备可以是运行x86构架处理器的设备,如台式电脑,笔记本等,第二设备可以是运行arm构架处理器的设备,如安卓设备(平板、手机等)。

目标调试程序可以是一个软件程序,也可以是一段代码程序,如恶意代码、病毒代码等。本实施例通过cpu模拟器,可以在第一设备中加载和执行只能在第二设备中正常执行的程序,通过在第一设备中模拟第二设备的运行环境,可以模拟执行第二设备的cpu的功能。

步骤s204,在第一设备中分配目标调试程序的内存空间;

步骤s206,在第一设备中运行目标调试程序,并触发目标调试程序的中断处理程序;

本实施例的中断处理程序设置在所述cpu模拟器中,用于与目标调试程序进行交互,并基于用户的外部指令,完成自动调试过程。

步骤s208,通过中断处理程序调试目标调试程序。

通过上述步骤,在x86构架的第一设备的cpu模拟器加载应用环境为arm构架的目标调试程序,然后在第一设备中分配目标调试程序的内存空间,在第一设备中运行目标调试程序,并触发目标调试程序的中断处理程序,通过中断处理程序调试目标调试程序,基于cpu模拟器提供虚拟的运行环境,模拟程序调试过程中的软硬件断点,在x86构架的调试设备上调试运行在arm构架上的程序时,不需要再连接arm构架的第二设备,解决了相关技术中不能在x86设备中直接调试arm设备的程序的技术问题,可以完全脱离真实设备进行调试,调试环境更加灵活,调试效率更高。

在本实施例中,在第一设备中运行目标调试程序,并触发的目标调试程序的中断处理程序,包括:

s11,检测cpu模拟器针对目标调试程序的执行操作;

s12,在cpu模拟器执行目标调试程序的任一代码指令时,触发软件中断信号;

s13,响应软件中断信号,执行回调函数的指定代码,其中,指定代码包括中断处理程序。

图3是本发明实施例的软件构架图,如图3所示,软件可以是运行在x86设备上的调试组件,如虚拟调试器,包括以下功能组件:cpu模拟器(unicorncpu)30,中断处理31,文件系统32,内存管理33,系统调用34,反汇编35,以unicorn作为框架的基础组件,利用unicorn的中断机制,实现以下组件的系统功能,包括:

文件系统:加载/解析待调试程序;

内存管理:管理程序分配释放内存;

系统调用:模拟操作系统常用的系统调用,open、read、write等操作;

反汇编:处理断点,步入/步过/停止/运行等操作。

使用unicorn作为调试器的api,通过以下指令触发中断处理程序,uc_hook_add(uc_engine*uc,uc_hook*hh,inttype,void*callback,void*user_data,uint64_tbegin,uint64_tend,...);调用api(unicornapi)后,当cpu将要执行一条指令时,都会先执行callback参数指定的代码。通过指令uc_mem_map(uc_engine*uc,uint64_taddress,size_tsize,uint32_tperms)和uc_mem_write(uc_engine*uc,uint64_taddress,constvoid*bytes,size_tsize),api可以实现内存操作。

在本实施例的一个实施方式中,在第一设备中分配目标调试程序的内存空间包括:获取目标调试程序的文件地址,其中,文件地址为相对地址;基于第一设备的存储器的寻址空间和文件地址计算目标调试程序的重定向地址,其中,重定向地址为绝对地址;根据绝对地址在第一设备中分配目标调试程序的内存空间。

目标调试程序从文件系统加载内存后,需要对其进行重定向处理,以确定目标调试程序在第一设备中的绝对地址,方便寻址访问。在一个示例中,目标调试程序在文件系统的文件地址为100,第一设备的存储器的寻址空间为10000,通过计算,重定向地址为100+10000=100100。

在本实施例的一个调试方式中,通过中断处理程序调试目标调试程序包括:

读取目标调试程序当前执行的指令代码;

解析指令代码,以确定指令代码的指令类型;

若指令类型为系统调用指令,对目标调试程序执行系统调试;若指令类型为断点指令,对目标调试程序执行断点调试。

在本实施例的另一个调试方式中,通过中断处理程序调试目标调试程序包括:

s21,读取目标调试程序当前执行的指令代码;

s22,判断指令代码的内存地址与代码地址是否相同;

若指令代码的内存地址与代码地址相同,则可以确定指令代码存在断点,目标调试程序暂停,等待用户输入外部调试指令。若指令代码的内存地址与代码地址不同,不存在断点,判断是否存在单步执行断点,目标调试程序暂停,等待用户输入外部调试指令。

s23,若内存地址与代码地址相同,暂停执行所述目标调试程序,接收外部调试指令;若内存地址与代码地址不相同,判断指令代码的代码地址是否存在单步执行断点,若代码地址存在单步执行断点,暂停执行所述目标调试程序,接收外部调试指令,其中,外部调试指令用于指示针对目标调试程序的调试方式;

可选的,外部调试指令可以但不限于为单步执行指令、步入执行指令、停止指令、运行指令,对应的调试方式分别为:单步调试、步入调试、停止、跳过并继续执行。

s24,根据外部调试指令控制目标调试程序。

在本实施例中,根据外部调试指令控制目标调试程序包括:若外部调试指令为单步执行指令,以指令代码为起始位置逐行执行目标调试程序;若外部调试指令为步入执行指令,进入指令代码的调用函数,并执行调用函数;若外部调试指令为停止指令,停止执行目标调试程序;若外部调试指令为运行指令,继续执行目标调试程序。

本实施例的单步执行即通过逐行地执行代码来实现调试,步入执行即代码指令调用了一个函数(或方法)时,单步进入会进入到该方法里面,除非此方法上有断点。

为了在用户界面显示当前的调试进度和调试内容,还可以通过反汇编的方式来显示调试状态信息。在读取目标调试程序当前执行的指令代码之后,对指令代码进行反汇编翻译,以将指令代码从机器语言转换为汇编语言;在第一设备的用户界面显示汇编语言。由于cpu执行的代码指令时机器语言,用户界面只能识别汇编语言(或者基于汇编语言的编程语言,如c语言等),所以需要将代码指令转换为汇编语言。

可选的,在第一设备中运行目标调试程序之前,还包括:确定第二设备的cpu的地址宽度;以地址宽度为单位,将目标调试程序的指令代码缓存至cpu模拟器中。第一设备的cpu支持较长的可读地址长度(地址宽度),而可读地址长度可以向下兼容,如64位可以兼容32位和16位,32位可以兼容16位,由于目标调试程序是为第二设备的,第二设备的cpu的可读地址长度可能与第一设备不同,通常情况下,第一设备的地址宽度会大于第二设备的地址宽度,因此可以第一设备的地址宽度为单位,将目标调试程序的指令代码缓存至cpu模拟器中,以实现cpu模拟器的正常运行。

图4是本发明实施例的调试运行流程图,流程包括:

s41,加载文件:将待调试代码,从文件系统加载到内存中;

s42,重定向:根据加载内存地址,调整待测试代码的地址、偏移等信息

s43,运行:此时待调试代码开始运行,16、32、64,可读地址长度;

s44,中断处理:cpu模拟器每执行一条代码都会发出一个中断信号,会有相应的中断处理程序被执行;

s45,判断系统调用:处理程序中判断当前执行的代码是否是一个系统调用或者断点,如果是系统调用,程序执行流程将转入“系统api实现模块”,否则进入下一个判断;

s46,判断断点,判断当前执行的代码地址,是否存在断点(内存地址,代码地址是否相同),如果有程序暂停,等待用户输入,否则进入下一个判断

s47,判断单步执行:如果当前有单步执行断点,则程序暂停,等待用户输入,否则程序继续执行回到运行状态;

s48,等待用户输入:此时程序暂停等待用户输入,用户根据执行情况可能会输入停止/运行/单步执行/步入执行4种情况;

s49,判断用户输入:停止则程序退出,单步执行则程序回到中断处理函数读取下一条指令执行,再次执行s44~s48的流程,运行则程序继续执行。

在这个模拟cpu的基础上进行开发可以实现一个功能更完善的调试器。模拟软硬件断点,可以完全脱离真实设备进行调试。调试环境更加灵活。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

在本实施例中还提供了一种程序的调试装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图5是根据本发明实施例的程序的调试装置的结构框图,如图5所示,该装置包括:加载模块50,分配模块52,运行模块54,调试模块56,其中,

加载模块50,用于通过第一操作系统的cpu模拟器加载目标调试程序,其中,所述第一操作系统运行在x86构架的第一设备,所述目标调试程序的应用环境为第二操作系统,所述第二操作系统运行在进阶精简指令集机器arm构架的第二设备;

分配模块52,用于在所述第一设备中分配所述目标调试程序的内存空间;

运行模块54,用于在所述第一设备中运行所述目标调试程序,并触发所述目标调试程序的中断处理程序;

调试模块56,用于通过所述中断处理程序调试所述目标调试程序。

可选的,所述运行模块,具体用于:检测所述cpu模拟器针对所述目标调试程序的执行操作;在所述cpu模拟器执行所述目标调试程序的任一代码指令时,触发软件中断信号;响应所述软件中断信号,执行回调函数的指定代码,其中,所述指定代码包括所述中断处理程序。

可选的,所述分配模块,具体用于:获取所述目标调试程序的文件地址,其中,所述文件地址为相对地址;基于所述第一设备的存储器的寻址空间和所述文件地址计算所述目标调试程序的重定向地址,其中,所述重定向地址为绝对地址;根据所述绝对地址在所述第一设备中分配所述目标调试程序的内存空间。

可选的,所述调试模块,具体用于:读取所述目标调试程序当前执行的指令代码;解析所述指令代码,以确定所述指令代码的指令类型;若所述指令类型为系统调用指令,对所述目标调试程序执行系统调试;若所述指令类型为断点指令,对所述目标调试程序执行断点调试。

可选的,所述调试模块,具体用于:读取所述目标调试程序当前执行的指令代码;判断所述指令代码的内存地址与代码地址是否相同;若内存地址与代码地址相同,暂停执行所述目标调试程序,接收外部调试指令;若内存地址与代码地址不相同,判断所述指令代码的代码地址是否存在单步执行断点,若所述代码地址存在单步执行断点,暂停执行所述目标调试程序,接收外部调试指令,其中,所述外部调试指令用于指示针对所述目标调试程序的调试方式;根据所述外部调试指令控制所述目标调试程序。

可选的,所述调试模块用于根据所述外部调试指令控制所述目标调试程序时,具体用于:若所述外部调试指令为单步执行指令,以所述指令代码为起始位置逐行执行所述目标调试程序;若所述外部调试指令为步入执行指令,进入所述指令代码的调用函数,并执行所述调用函数;若所述外部调试指令为停止指令,停止执行所述目标调试程序;若所述外部调试指令为运行指令,继续执行所述目标调试程序。

可选的,所述调试模块在读取所述目标调试程序当前执行的指令代码之后,还用于:对所述指令代码进行反汇编翻译,以将所述指令代码从机器语言转换为汇编语言;在所述第一设备的用户界面显示所述汇编语言。

可选的,所述装置还包括:确定模块,用于在所述运行模块在所述第一设备中运行所述目标调试程序之前,确定所述第二设备的cpu的地址宽度;缓存模块,用于以所述地址宽度为单位,将所述目标调试程序的指令代码缓存至所述cpu模拟器中。

图6是本发明一个实施方式中的程序的调试装置的结构框图,如图6所示,该装置包括:加载模块50,分配模块52,运行模块54,调试模块56,上传模块50,确定模块60,缓存模块62,其中,确定模块60,用于在所述运行模块在所述第一设备中运行所述目标调试程序之前,确定所述第二设备的cpu的地址宽度;缓存模块62,用于以所述地址宽度为单位,将所述目标调试程序的指令代码缓存至所述cpu模拟器中。

需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。

本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。

可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:

s1,通过第一操作系统的cpu模拟器加载目标调试程序,其中,所述第一操作系统运行在x86构架的第一设备,所述目标调试程序的应用环境为第二操作系统,所述第二操作系统运行在进阶精简指令集机器arm构架的第二设备;

s2,在所述第一设备中分配所述目标调试程序的内存空间;

s3,在所述第一设备中运行所述目标调试程序,并触发所述目标调试程序的中断处理程序;

s4,通过所述中断处理程序调试所述目标调试程序。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(read-onlymemory,简称为rom)、随机存取存储器(randomaccessmemory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。

本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。

可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。

可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:

s1,通过第一操作系统的cpu模拟器加载目标调试程序,其中,所述第一操作系统运行在x86构架的第一设备,所述目标调试程序的应用环境为第二操作系统,所述第二操作系统运行在进阶精简指令集机器arm构架的第二设备;

s2,在所述第一设备中分配所述目标调试程序的内存空间;

s3,在所述第一设备中运行所述目标调试程序,并触发所述目标调试程序的中断处理程序;

s4,通过所述中断处理程序调试所述目标调试程序。

可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。

本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于系统实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

可能以许多方式来实现本发明的方法和系统。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本发明的方法和系统。用于所述方法的步骤的上述顺序仅是为了进行说明,本发明的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本发明实施为记录在记录介质中的程序,这些程序包括用于实现根据本发明的方法的机器可读指令。因而,本发明还覆盖存储用于执行根据本发明的方法的程序的记录介质。

本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1