CN113590470B - 软件调试方法、装置、电子设备及存储介质 - Google Patents

软件调试方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN113590470B
CN113590470B CN202110745604.9A CN202110745604A CN113590470B CN 113590470 B CN113590470 B CN 113590470B CN 202110745604 A CN202110745604 A CN 202110745604A CN 113590470 B CN113590470 B CN 113590470B
Authority
CN
China
Prior art keywords
debugging
processor
program
host
debugged
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.)
Active
Application number
CN202110745604.9A
Other languages
English (en)
Other versions
CN113590470A (zh
Inventor
乔崇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Loongson Zhongke Chengdu Technology Co ltd
Original Assignee
Loongson Zhongke Chengdu Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Loongson Zhongke Chengdu Technology Co ltd filed Critical Loongson Zhongke Chengdu Technology Co ltd
Priority to CN202110745604.9A priority Critical patent/CN113590470B/zh
Publication of CN113590470A publication Critical patent/CN113590470A/zh
Application granted granted Critical
Publication of CN113590470B publication Critical patent/CN113590470B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明实施例提供了一种软件调试方法、装置、电子设备及储存介质。该方法包括:在被调试主机的处理器触发处理器断点调试程序时,执行处理器断点调试程序的入口地址处预先存入的跳转指令,跳转指令用于跳转到存储调试服务程序的目标地址;在被调试主机的处理器执行跳转指令后,在被调试主机的处理器上运行调试服务程序,基于调试服务程序中的远程串行通信协议,与调试主机上运行的调试程序进行通信,实现对被调试主机的处理器上程序的调试。本发明无需专用于处理器断点调试的仿真器等硬件辅助,可直接对处理器上软件进行调试和监控,降低了软件调试成本,且实现了快速对软件进行调试,对于没有设置专用于处理器断点调试的接口的产品同样适用。

Description

软件调试方法、装置、电子设备及存储介质
技术领域
本发明涉及软件调试技术领域,特别是涉及一种软件调试方法、一种软件调试装置、一种电子设备以及一种存储介质。
背景技术
一般在软件开发阶段需要对软件进行调试和性能优化,或者在操作系统出现异常时,需要对寄存器、进程等信息进行分析。但在软件调试时,尤其是对于发布版本的软件往往本身没有集成调试功能,调试起来非常困难。处理器中可以包含一些调试接口,用于实现对处理器的调试,常见的调试接口如JTAG(Joint Test Action Group,联合测试行为组织)调试接口和EJTAG(Enhanced Joint Test Action Group,增强联合测试行为组织)调试接口。
如图1所示,是常见的EJTAG调试的硬件连接示意图,调试主机(Debug host)通过以太网(Ethernet),RS-232(异步传输标准接口)等接口与EJTAG仿真器,即TAP access(Test Access Port access,测试接入端口通道)连接,该TAP access用于进行EJTAG探测(EJTAG probe),并通过JTAG测试接入端口类型的接口(JTAG TAP interface)与系统原型(System Prototype)连接,其中,在系统原型中,其它系统逻辑(Other System Logic)通过JTAG扫描链(JTAG scan chain)与包括具有EJTAG的CPU(CPU with EJTAG)的SOC(SystemOn Chip,片上系统)、ASIC(Application Specific Integrated Circuit,专用集成电路)或ASSP(Application Specific Standard Parts,专用标准产品)连接。
常规EJTAG调试方法需要使用专门的EJTAG仿真器和在另外一台电脑上运行调试软件,才能对被调试主机进行调试,成本高且速度慢,而且很多产品上为了节约尺寸或者减少电磁干扰,被调试主机上没有设置EJTAG接口,无法插入EJTAG仿真器,没法实现这种调试,这一问题亟待解决。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种软件调试方法,以不用EJTAG仿真器硬件辅助的情况下,直接对处理器上软件进行调试。
相应的,本发明实施例还提供了一种软件调试装置、一种电子设备以及一种存储介质,用以保证上述方法的实现及应用。
为了解决上述问题,本发明实施例公开了一种软件调试方法,包括:
在被调试主机的处理器触发处理器断点调试程序时,执行所述处理器断点调试程序的入口地址处预先存入的跳转指令,所述跳转指令用于跳转到存储调试服务程序的目标地址;
从所述目标地址获取所述调试服务程序,并运行所述调试服务程序;
基于所述调试服务程序中的远程串行通信协议,与调试主机上运行的调试程序进行通信。
可选的,在被调试主机的处理器触发处理器断点调试程序之前,所述方法还包括:
在所述目标地址中存储所述调试服务程序的二进制文件,并保存存储所述调试服务程序的二进制文件之前所述目标地址处存储的信息;
所述运行所述调试服务程序包括:
获取所述二进制文件中的可执行指令,所述可执行指令用于对所述被调试主机的处理器上运行的软件进行调试;
执行所述可执行指令。
可选的,所述入口地址为入口物理地址,所述方法还包括:
在被调试主机的处理器触发处理器断点调试程序时,若所述处理器断点调试程序的入口地址处未预先存入所述跳转指令,则将处理器当前使用的内存虚拟地址映射到所述入口物理地址,并将所述跳转指令拷贝到所述入口物理地址中。
可选的,所述方法还包括:
在被调试主机的处理器触发处理器断点调试程序时,若所述目标地址处未存储所述调试服务程序,则通过在所述被调试主机的启动加载程序命令行或者操作系统命令行,执行拷贝所述调试服务程序的命令,以使所述调试服务程序被拷贝到所述目标地址处。
可选的,所述目标地址为所述被调试主机的预设物理地址。
本发明实施例还公开了一种软件调试装置,包括:
跳转模块,用于在被调试主机的处理器触发处理器断点调试程序时,执行所述处理器断点调试程序的入口地址处预先存入的跳转指令,所述跳转指令用于跳转到存储调试服务程序的目标地址;
程序运行模块,用于从所述目标地址获取所述调试服务程序,并运行所述调试服务程序;
调试模块,用于基于所述调试服务程序中的远程串行通信协议,与调试主机上运行的调试程序进行通信。
可选的,所述装置还包括:
保存模块,用于在被调试主机的处理器触发处理器断点调试程序之前,在所述目标地址中存储所述调试服务程序的二进制文件,并保存存储所述调试服务程序的二进制文件之前所述目标地址处存储的信息;
所述程序运行模块包括:
指令获取子模块,用于获取所述二进制文件中的可执行指令,所述可执行指令用于对所述被调试主机的处理器上运行的软件进行调试;
指令执行子模块,用于执行所述可执行指令。
可选的,所述入口地址为入口物理地址,所述装置还包括:
第一拷贝模块,用于在被调试主机的处理器触发处理器断点调试程序时,若所述处理器断点调试程序的入口地址处未预先存入所述跳转指令,则将处理器当前使用的内存虚拟地址映射到所述入口物理地址,并将所述跳转指令拷贝到所述入口物理地址中。
可选的,所述装置还包括:
第二拷贝模块,用于在被调试主机的处理器触发处理器断点调试程序时,若所述目标地址处未存储所述调试服务程序,则通过在所述被调试主机的启动加载程序命令行或者操作系统命令行,执行拷贝所述调试服务程序的命令,以使所述调试服务程序被拷贝到所述目标地址处。
可选的,所述目标地址为所述被调试主机的预设物理地址。
本发明实施例还公开了一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现如上所述的方法步骤。
本发明实施例还公开了一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行本发明实施例中一个或多个所述的软件调试方法。
本发明实施例包括以下优点:
本发明在被调试主机的处理器断点调试程序的入口地址处预先存入跳转指令,该跳转指令用于跳转到存储调试服务程序的目标地址,在被调试主机的处理器触发处理器断点调试程序时,执行所述处理器断点调试程序的入口地址处预先存入的跳转指令;跳转到目标地址后,运行目标地址处的调试服务程序,基于所述调试服务程序中的远程串行通信协议,与调试主机上运行的调试程序进行通信。如此被调试主机的处理器触发处理器断点调试程序后,被调试主机的处理器跳转到目标地址运行调试服务程序,调试主机与被调试主机的处理器通过调试服务程序的远程串行通信协议协同工作,从而实现被调试主机的处理器上软件的调试,无需专用于处理器断点调试的仿真器等硬件辅助,与操作系统和固件无关,可以直接对处理器上软件进行调试和监控,以及采集数据进行性能分析等,降低了软件调试成本,且实现了快速对软件进行调试,对于没有设置专用于处理器断点调试的接口的产品同样适用。
附图说明
图1是现有技术中EJTAG调试的硬件连接示意图;
图2是本发明的一种软件调试方法实施例的步骤流程图;
图3是本发明的一种软件调试装置实施例的结构框图;
图4是根据一示例性实施例示出的一种用于软件调试的终端的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明实施例的核心构思之一在于,依据处理器断点调试的相关协议标准,将跳转指令和调试服务程序预先存入被调试主机的处理器的内存中,不需要额外的专用于处理器断点调试的仿真器等硬件且在不修改被调试系统情况下,能够方便、快速的对运行在处理器的软件进行调试和监控,以及采集数据进行性能分析等,降低了软件调试成本,对于没有设置专用于处理器断点调试的接口的产品同样适用。
为了更好地理解本发明,下面以EJTAG协议为例进行简要说明。
图1是常见的EJTAG硬件调试连接示意图,调试主机通过EJTAG仿真器和被调试主机的处理器相连接,被调试主机的处理器中运行着需要进行性能分析的程序。EJTAG标准在JTAG标准的基础上增加了ADDRESS、DATA和CONTROL三个JTAG寄存器,用来控制处理器的状态。常见的EJTAG调试是EJTAG仿真器通过改变被调试处理器的EJTAG_CONTROL寄存器,让异常地址变成0xff200200,对应的调试主机上运行的调试软件通过EJTAG接口访问被调试处理器的EJTAG_DATA,EJTAG_ADDR,EJTAG_CONTROL这三个寄存器,进而实现调试主机和被调试主机的处理器的交互。
本发明实施例是通过另外一种方式实现对软件的调试,从快闪存储器flash偏移地址0x480/处理器地址0xbfc00480执行EJTAG异常程序。处理器复位后默认就是采用这种方式。
参照图2,示出了本发明的一种软件调试方法实施例的步骤流程图,具体可以包括如下步骤:
步骤201,在被调试主机的处理器触发处理器断点调试程序时,执行所述处理器断点调试程序的入口地址处预先存入的跳转指令,所述跳转指令用于跳转到存储调试服务程序的目标地址。
在本发明实施例中,处理器断点包括软件断点和硬件断点,处理器可以通过设置软件/硬件断点,来进入调试模型。例如,所有MIPS(Microprocessor Without InterlockedPiped Stage,无内部互锁流水级微处理器)的微处理器或是包含MIPS核的SoC(System-on-a-Chip,系统级芯片组)芯片组件均提供对EJTAG调试的支持。EJTAG接口利用JTAG的TAP(Test Access Port)访问方式,将测试数据传入或者传出处理器核。EJTAG可实现的功能包括:访问处理器的寄存器、访问系统内存空间、设置软件/硬件断点、单步/多步执行等。处理器断点调试程序包括EJTAG异常程序等,或者其他任意使用的程序,本发明实施例对此不做限制。
在本发明实施例中,调试服务程序是在调试时需要部署在被调试主机上,且运行在被调试主机的处理器上的程序,与调试主机上的调试程序配合来完成软件调试的程序。调试服务程序需要预先存储在目标地址处。调试服务程序可以是二进制文件,其中是处理器直接可以执行的二进制指令。
在本发明实施例中,调试服务程序中可以实现的命令包括:保存现场(包括通用寄存器,浮点寄存器等),执行用于远程调试的远程串行通信协议(例如,GDB(GNU Debugger,GNU调试器)remote协议)等。调试主机上的调试程序和被调试主机的处理器上运行的调试服务程序配合,可以实现通过串口,调试主机远程连接被调试主机的处理器、查看寄存器、内存、设置软件断点、硬件断点等,通过调试主机上的调试器的监视器命令执行调试服务程序包含的其他命令。
这里,在被调试主机的处理器处理处理器断点调试程序的入口地址处预先存入跳转指令,被调试主机的处理器执行该跳转指令,可以跳转到存储调试服务程序的目标地址,以基于调试服务程序中的远程串行通信协议实现与调试主机交互,无需专用于处理器断点调试的仿真器等硬件辅助。
例如,EJTAG异常程序的入口地址可为flash偏移地址0x480/处理器地址0xbfc00480,此时在被调试主机的处理器触发EJTAG异常时,在flash偏移地址0x480/处理器地址0xbfc00480位置采用跳转指令跳转到存储调试服务程序的二进制文件的目标地址。存储调试服务程序的二进制文件的目标地址可为被调试主机的处理器内存地址0x80008000,但不限于此。
步骤202,从所述目标地址获取所述调试服务程序,并运行所述调试服务程序。
在本发明实施例中,被调试主机的处理器从目标地址获取调试服务程序,并运行调试服务程序。例如,处理器从目标地址处获取调试服务程序的二进制文件,直接执行其中的二进制指令,从而运行调试服务程序。
步骤203,基于所述调试服务程序中的远程串行通信协议,与调试主机上运行的调试程序进行通信。
在本发明实施例中,在被调试主机的处理器上运行调试服务程序后,并在调试主机上运行调试程序。被调试主机的处理器上运行的调试服务程序中采用远程串行通信协议,与调试主机上运行的调试程序通信,调试主机可以基于远程串行通信协议查看被调试处理器上的寄存器、内存、设置软件断点、硬件断点等,完成被调试主机的处理器上软件的调试,无需专用于处理器断点调试的仿真器等硬件辅助。
其中,远程串行通信协议包括远程通过串口进行通信的各种协议,本发明实施例对此不做限制。调试服务程序和调试程序中基于远程串行通信协议实现通信,从而不需要使用专用于处理器断点调试的接口来实现通信。
本发明实施例的软件调试方法,设计了一个跟设备主板无关的调试服务程序,在被调试主机的处理器触发处理器断点调试程序后,被调试主机的处理器跳转到目标地址运行调试服务程序,调试主机与被调试主机的处理器通过调试程序和调试服务程序的远程串行通信协议协同工作,从而实现被调试主机的处理器上软件的调试,无需专用于处理器断点调试的仿真器等硬件辅助,与操作系统和固件无关,可以直接对处理器上软件进行调试和监控,以及采集数据进行性能分析等,降低了软件调试成本,且实现了快速对软件进行调试,对于没有设置专用于处理器断点调试的接口的产品同样适用。
优选的,本发明实施例可采用GDB远程调试工具实现调试主机对处理器上软件的调试,此时在目标地址处存储的调试服务程序的二进制文件简称为gdbstub文件,调试主机上运行的调试程序具体为GDB调试程序。基于GDB远程调试,上述步骤203包括:
在所述被调试主机的处理器执行所述跳转指令后,在所述被调试主机的处理器上运行gdbstub文件,并使所述被调试主机的处理器上运行的所述gdbstub文件与调试主机上运行的GDB调试程序通过串口,并基于远程串行通信协议通信连接。
此时,在被调试主机的处理器执行跳转指令跳转到目标地址后,在被调试主机的处理器上运行gdbstub文件,在调试主机上运行GDB调试程序。gdbstub是嵌入式系统中的一段代码,它是运行GDB的调试主机和被调试处理器进行交互的一个媒介,调试主机上执行GDB远程串行通信协议时,gdbstub完成对协议的解析,实现与调试主机上GDB的通信。使用GDB进行远程调试时,运行在调试主机上的GDB与运行在被调试主机的处理器上的gdbstub通过串口连接,并基于GDB远程串行通信协议协同工作,调试主机可以查看被调试处理器上的寄存器、内存、设置软件断点、硬件断点等,并可以通过GDB的监视monitor命令执行gdbstub文件里包含的其他命令,从而完成EJTAG的GDB调试。
当然,上述采用GDB远程调试的方式仅为一种优选的实现方式,本发明实施例也可采用其他远程调试工具进行远程调试,例如dddt、eclipse等。
优选的,在被调试主机的处理器触发处理器断点调试程序之前,所述方法还包括:在所述目标地址中存储所述调试服务程序的二进制文件,并保存存储所述调试服务程序的二进制文件之前所述目标地址处存储的信息。所述运行所述调试服务程序包括:获取所述二进制文件中的可执行指令,所述可执行指令用于对所述被调试主机的处理器上运行的软件进行调试;执行所述可执行指令。
此时,在目标地址,例如内存地址0x80008000上存储调试服务程序的二进制文件的同时保存现场,即目标地址处之前存储的信息,包括通用寄存器、浮点寄存器等,以便于在退出调试时能够恢复现场,避免目标地址之前存储信息的丢失。
其中,上述步骤可以在被调试主机的处理器启动加载程序bootloader时将调试服务程序的二进制文件驻留到目标地址中,也可以在被调试主机的处理器上操作系统运行起来后将调试服务程序的二进制文件驻留到目标地址中。
调试服务程序的二进制文件中是处理器可以直接执行的指令,可执行指令用于对被调试主机的处理器运行的软件进行调试,其中有的指令自动在被调试主机的处理器上执行,有的指令等待调试主机的指示再执行。被调试主机的处理器获取二进制文件中的可执行指令后,就可以直接执行可执行指令。
优选的,被调试主机的处理器触发处理器断点调试程序的方法可以是执行断点sdbbp指令,可以执行嵌入sdbbp指令的程序,触发进入EJTAG异常,从EJTAG异常程序入口地址0xbfc00480跳转到目标地址0x80008000,调试主机执行GDB远程协议,进行GDB调试。
优选的,入口地址为入口物理地址,所述方法还包括:
步骤204:在被调试主机的处理器触发处理器断点调试程序时,若所述处理器断点调试程序的入口地址处未预先存入所述跳转指令,则将处理器当前使用的内存虚拟地址映射到所述入口物理地址,并将所述跳转指令拷贝到所述入口物理地址中。
此时,如果EJTAG异常程序的入口地址中没有加入跳转到目标地址的跳转指令,为了将跳转指令写入到内存中特定的物理地址处,需要先将处理器当前使用的内存虚拟地址映射到所述入口物理地址,并将跳转指令拷贝到该入口物理地址中,从而在被调试主机的处理器触发处理器断点调试程序时,使被调试主机的处理器跳转到目标地址运行调试服务程序,并通过调试服务程序与调试主机的调试程序通信连接,从而实现在被调试主机的处理器上对软件的调试。
例如,假设EJTAG异常程序入口虚拟地址为0xbfc00480,上述步骤204在没有在0xbfc00480加入跳转指令的情况下,可设置被调试主机的处理器的窗口寄存器将内存地址0映射到0x1fc00000,这样EJTAG异常程序入口虚拟地址0xbfc00480就映射到了内存物理地址0x480,再将跳转到目标地址的指令拷贝到内存物理地址0x480。
优选的,所述方法还包括:
步骤205:在被调试主机的处理器触发处理器断点调试程序时,若所述目标地址处未存储所述调试服务程序,则通过在所述被调试主机的处理器的启动加载程序命令行或者操作系统命令行,执行拷贝所述调试服务程序的命令,以使所述调试服务程序被拷贝到所述目标地址处。
此时,如果目标地址处没有存储调试服务程序,可以在启动加载程序bootloader命令行或者操作系统命令行下,通过命令将调试服务程序拷贝到目标地址处。例如,命令/命令行中携带拷贝命令,调试服务程序的二进制文件的标识gdbstub.bin及其存储路径,以及目标地址0x80008000,bootloader或操作系统解析该命令/命令行,根据标识gdbstub.bin及其存储路径,提取到二进制文件,再将该二进制文件拷贝到内存中目标地址0x80008000处。在被调试主机的处理器触发处理器断点调试程序时,使被调试主机的处理器跳转到目标地址处运行调试服务程序,并通过调试服务程序与调试主机的调试程序通信连接,从而实现对被调试处理器的调试。
本发明实施例的软件调试方法,利用处理器断点调试协议,在系统刚上电的时候实现对处理器上运行的操作系统和程序的调试和监控。其优点是不用专用于处理器断点调试的仿真器等硬件辅助,与操作系统和固件无关,在不需要额外硬件且在不修改被调试系统情况下,能够方便、快速的对运行在处理器的软件进行调试和监控,以及采集数据进行性能分析等,降低了软件调试成本,对于没有设置专用于处理器断点调试的接口的产品同样适用。
优选地,目标地址为所述被调试主机的预设物理地址。目标地址为内存中的预设物理地址,例如,0x80008000,或者其他任意适用的地址,本发明实施例对此不做限制。目标地址为预设物理地址,当处理器处于断点调试模式时,仍然可以找到预设物理地址对应的内存位置,获取到调试服务程序。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图3,示出了本发明的一种软件调试装置实施例的结构框图,具体可以包括如下模块:
跳转模块301,用于在被调试主机的处理器触发处理器断点调试程序时,执行所述处理器断点调试程序的入口地址处预先存入的跳转指令,所述跳转指令用于跳转到存储调试服务程序的目标地址;
程序运行模块302,用于从所述目标地址获取所述调试服务程序,并运行所述调试服务程序;
调试模块303,用于基于所述调试服务程序中的远程串行通信协议,与调试主机上运行的调试程序进行通信。
优选的,所述装置还包括:
保存模块,用于在被调试主机的处理器触发处理器断点调试程序之前,在所述目标地址中存储所述调试服务程序的二进制文件,并保存存储所述调试服务程序的二进制文件之前所述目标地址处存储的信息;
所述程序运行模块包括:
指令获取子模块,用于获取所述二进制文件中的可执行指令,所述可执行指令用于对所述被调试主机的处理器上运行的软件进行调试;
指令执行子模块,用于执行所述可执行指令。
优选的,所述入口地址为入口物理地址,所述装置还包括:
第一拷贝模块,用于在被调试主机的处理器触发处理器断点调试程序时,若所述处理器断点调试程序的入口地址处未预先存入所述跳转指令,则将处理器当前使用的内存虚拟地址映射到所述入口物理地址,并将所述跳转指令拷贝到所述入口物理地址中。
优选的,所述装置还包括:
第二拷贝模块,用于在被调试主机的处理器触发处理器断点调试程序时,若所述目标地址处未存储所述调试服务程序,则通过在所述被调试主机的启动加载程序命令行或者操作系统命令行,执行拷贝所述调试服务程序的命令,以使所述调试服务程序被拷贝到所述目标地址处。
优选的,所述目标地址为所述被调试设备的预设物理地址。
优选的,所述调试模块303具体用于:
在所述被调试主机的处理器执行所述跳转指令后,在所述被调试主机的处理器上运行gdbstub文件,并使所述被调试处理器上运行的所述gdbstub文件与调试主机上运行的GDB调试程序通过串口,并基于远程串行通信协议通信连接。
本发明实施例的软件调试方法,设计了一个跟设备主板无关的调试服务程序,在被调试主机的处理器触发处理器断点调试程序后,被调试主机的处理器跳转到目标地址运行调试服务程序,调试主机与被调试主机的处理器通过调试程序和调试服务程序的远程串行通信协议协同工作,从而实现被调试主机的处理器上软件的调试,无需专用于处理器断点调试的仿真器等硬件辅助,与操作系统和固件无关,可以直接对处理器上软件进行调试和监控,以及采集数据进行性能分析等,降低了软件调试成本,且实现了快速对软件进行调试,对于没有设置专用于处理器断点调试的接口的产品同样适用。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
图4是根据一示例性实施例示出的一种用于软件调试的电子设备400的结构框图。例如,电子设备400可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图4,电子设备400可以包括以下一个或多个组件:处理组件402,存储器404,电源组件406,多媒体组件408,音频组件410,输入/输出(I/O)的接口412,传感器组件414,以及通信组件416。
处理组件402通常控制电子设备400的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件402可以包括一个或多个处理器420来执行指令,以完成上述的软件调试方法的全部或部分步骤。此外,处理组件402可以包括一个或多个模块,便于处理组件402和其他组件之间的交互。例如,处理部件402可以包括多媒体模块,以方便多媒体组件408和处理组件402之间的交互。
存储器404被配置为存储各种类型的数据以支持在设备400的操作。这些数据的示例包括用于在电子设备400上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器404可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电力组件404为电子设备400的各种组件提供电力。电力组件404可以包括电源管理系统,一个或多个电源,及其他与为电子设备400生成、管理和分配电力相关联的组件。
多媒体组件408包括在所述电子设备400和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件408包括一个前置摄像头和/或后置摄像头。当电子设备400处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件410被配置为输出和/或输入音频信号。例如,音频组件410包括一个麦克风(MIC),当电子设备400处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器404或经由通信组件416发送。在一些实施例中,音频组件410还包括一个扬声器,用于输出音频信号。
I/O接口412为处理组件402和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件414包括一个或多个传感器,用于为电子设备400提供各个方面的状态评估。例如,传感器组件414可以检测到设备400的打开/关闭状态,组件的相对定位,例如所述组件为电子设备400的显示器和小键盘,传感器组件414还可以检测电子设备400或电子设备400一个组件的位置改变,用户与电子设备400接触的存在或不存在,电子设备400方位或加速/减速和电子设备400的温度变化。传感器组件414可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件414还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件414还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件416被配置为便于电子设备400和其他设备之间有线或无线方式的通信。电子设备400可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信部件414经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信部件414还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,电子设备400可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述软件调试方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器404,上述指令可由电子设备400的处理器420执行以完成上述软件调试方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
一种非临时性计算机可读存储介质,当所述存储介质中的指令由终端的处理器执行时,使得终端能够执行一种软件调试方法,所述方法包括:
在被调试主机的处理器触发处理器断点调试程序时,执行所述处理器断点调试程序的入口地址处预先存入的跳转指令,所述跳转指令用于跳转到存储调试服务程序的目标地址;
从所述目标地址获取所述调试服务程序,并运行所述调试服务程序;
基于所述调试服务程序中的远程串行通信协议,与调试主机上运行的调试程序进行通信。
可选的,在被调试主机的处理器触发处理器断点调试程序之前,所述方法还包括:
在所述目标地址中存储所述调试服务程序的二进制文件,并保存存储所述调试服务程序的二进制文件之前所述目标地址处存储的信息;
所述运行所述调试服务程序包括:
获取所述二进制文件中的可执行指令,所述可执行指令用于对所述被调试主机的处理器上运行的软件进行调试;
执行所述可执行指令。
可选的,所述入口地址为入口物理地址,所述方法还包括:
在被调试主机的处理器触发处理器断点调试程序时,若所述处理器断点调试程序的入口地址处未预先存入所述跳转指令,则将处理器当前使用的内存虚拟地址映射到所述入口物理地址,并将所述跳转指令拷贝到所述入口物理地址中。
可选的,所述方法还包括:
在被调试主机的处理器触发处理器断点调试程序时,若所述目标地址处未存储所述调试服务程序,则通过在所述被调试主机的启动加载程序命令行或者操作系统命令行,执行拷贝所述调试服务程序的命令,以使所述调试服务程序被拷贝到所述目标地址处。
可选的,所述目标地址为所述被调试主机的预设物理地址。
可选的,在所述基于所述调试服务程序中的远程串行通信协议,与调试主机上运行的调试程序进行通信的步骤包括:
在所述被调试主机的处理器执行所述跳转指令后,在所述被调试主机的处理器上运行gdbstub文件,并使所述被调试主机的处理器上运行的所述gdbstub文件与调试主机上运行的GDB调试程序通过串口,并基于远程串行通信协议通信连接。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以预测方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种软件调试方法和装置、一种电子设备以及一种储存介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (10)

1.一种软件调试方法,其特征在于,包括:
在被调试主机的处理器触发处理器断点调试程序时,执行所述处理器断点调试程序的入口地址处预先存入的跳转指令,所述跳转指令用于跳转到存储调试服务程序的目标地址,所述目标地址为所述被调试主机的预设物理地址;
从所述目标地址获取所述调试服务程序,并运行所述调试服务程序;
基于所述调试服务程序中的远程串行通信协议,与调试主机上运行的调试程序进行通信。
2.根据权利要求1所述的软件调试方法,其特征在于,在被调试主机的处理器触发处理器断点调试程序之前,所述方法还包括:
在所述目标地址中存储所述调试服务程序的二进制文件,并保存存储所述调试服务程序的二进制文件之前所述目标地址处存储的信息;
所述运行所述调试服务程序包括:
获取所述二进制文件中的可执行指令,所述可执行指令用于对所述被调试主机的处理器上运行的软件进行调试;
执行所述可执行指令。
3.根据权利要求1所述的软件调试方法,其特征在于,所述入口地址为入口物理地址,所述方法还包括:
在被调试主机的处理器触发处理器断点调试程序时,若所述处理器断点调试程序的入口地址处未预先存入所述跳转指令,则将处理器当前使用的内存虚拟地址映射到所述入口物理地址,并将所述跳转指令拷贝到所述入口物理地址中。
4.根据权利要求1-3任一项所述的软件调试方法,其特征在于,所述方法还包括:
在被调试主机的处理器触发处理器断点调试程序时,若所述目标地址处未存储所述调试服务程序,则通过在所述被调试主机的启动加载程序命令行或者操作系统命令行,执行拷贝所述调试服务程序的命令,以使所述调试服务程序被拷贝到所述目标地址处。
5.一种软件调试装置,其特征在于,包括:
跳转模块,用于在被调试主机的处理器触发处理器断点调试程序时,执行所述处理器断点调试程序的入口地址处预先存入的跳转指令,所述跳转指令用于跳转到存储调试服务程序的目标地址,所述目标地址为所述被调试主机的预设物理地址;
程序运行模块,用于从所述目标地址获取所述调试服务程序,并运行所述调试服务程序;
调试模块,用于基于所述调试服务程序中的远程串行通信协议,与调试主机上运行的调试程序进行通信。
6.根据权利要求5所述的软件调试装置,其特征在于,所述装置还包括:
保存模块,用于在被调试主机的处理器触发处理器断点调试程序之前,在所述目标地址中存储所述调试服务程序的二进制文件,并保存存储所述调试服务程序的二进制文件之前所述目标地址处存储的信息;
所述程序运行模块包括:
指令获取子模块,用于获取所述二进制文件中的可执行指令,所述可执行指令用于对所述被调试主机的处理器上运行的软件进行调试;
指令执行子模块,用于执行所述可执行指令。
7.根据权利要求5所述的软件调试装置,其特征在于,所述入口地址为入口物理地址,所述装置还包括:
第一拷贝模块,用于在被调试主机的处理器触发处理器断点调试程序时,若所述处理器断点调试程序的入口地址处未预先存入所述跳转指令,则将处理器当前使用的内存虚拟地址映射到所述入口物理地址,并将所述跳转指令拷贝到所述入口物理地址中。
8.根据权利要求5-7任一项所述的软件调试装置,其特征在于,所述装置还包括:
第二拷贝模块,用于在被调试主机的处理器触发处理器断点调试程序时,若所述目标地址处未存储所述调试服务程序,则通过在所述被调试主机的启动加载程序命令行或者操作系统命令行,执行拷贝所述调试服务程序的命令,以使所述调试服务程序被拷贝到所述目标地址处。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-4任一所述的方法步骤。
10.一种可读存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如方法权利要求1-4中一个或多个所述的软件调试方法。
CN202110745604.9A 2021-06-30 2021-06-30 软件调试方法、装置、电子设备及存储介质 Active CN113590470B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110745604.9A CN113590470B (zh) 2021-06-30 2021-06-30 软件调试方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110745604.9A CN113590470B (zh) 2021-06-30 2021-06-30 软件调试方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN113590470A CN113590470A (zh) 2021-11-02
CN113590470B true CN113590470B (zh) 2024-06-14

Family

ID=78245447

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110745604.9A Active CN113590470B (zh) 2021-06-30 2021-06-30 软件调试方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN113590470B (zh)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6915416B2 (en) * 2000-12-28 2005-07-05 Texas Instruments Incorporated Apparatus and method for microcontroller debugging
US9639451B2 (en) * 2010-01-25 2017-05-02 Nxp Usa, Inc. Debugger system, method and computer program product for utilizing hardware breakpoints for debugging instructions
CN104778116B (zh) * 2014-01-09 2018-09-18 深圳市中兴微电子技术有限公司 一种多断点的软件调试装置和方法
CN105550118B (zh) * 2016-01-27 2018-01-30 珠海格力电器股份有限公司 调试系统和调试方法
CN108319555B (zh) * 2018-03-17 2021-03-09 成都大学 一种基于嵌入式实时系统的实时调试方法
CN111209193B (zh) * 2019-12-30 2023-09-22 北京水滴科技集团有限公司 程序的调试方法及装置
CN111367742A (zh) * 2020-03-02 2020-07-03 深圳中微电科技有限公司 调试mvp处理器的方法、装置、终端和计算机可读存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
DIA: A Complexity-Effective Decoding Architecture;Oliverio J. Santana 等;《IEEE Transactions on Computers》;第448-462页 *
MIPS北桥设计中的验证与调试系统;武杰 等;《小型微型计算机系统》;第1716-1718页 *

Also Published As

Publication number Publication date
CN113590470A (zh) 2021-11-02

Similar Documents

Publication Publication Date Title
CN110941942B (zh) 电路原理图检查方法、装置及系统
CN109491924B (zh) 代码检测方法、装置、终端及存储介质
CN110837473A (zh) 应用程序调试方法、装置、终端及存储介质
CN109344051B (zh) 数据处理的方法、装置、电子设备及存储介质
CN113377370A (zh) 一种文件处理方法、装置、电子设备及存储介质
CN110781080A (zh) 程序调试方法及装置、存储介质
CN109684112B (zh) 程序文件运行方法、装置、终端及存储介质
CN110795354A (zh) 信息处理方法、装置及存储介质
CN112363950B (zh) 应用程序的调试方法及装置
CN113934561A (zh) 故障定位方法、装置、系统、硬件平台及存储介质
CN113590470B (zh) 软件调试方法、装置、电子设备及存储介质
CN111209195B (zh) 一种生成测试用例的方法及装置
CN117033179A (zh) 一种机器指令调试方法、装置、电子设备及可读存储介质
CN114661606A (zh) 程序调试方法、装置、电子设备及存储介质
US9291672B2 (en) Debug system, apparatus and method thereof for providing graphical pin interface
CN107391356B (zh) 卡顿信息获取方法、装置及计算机可读存储介质
CN110618938B (zh) 快应用入口调试方法、装置及存储介质
CN116450534B (zh) 移动端应用程序的生成方法、装置、设备及介质
CN114238006A (zh) 单片机的调试方法、装置及设备
CN109739763B (zh) 代码段运行方法、装置、终端及存储介质
CN117762717B (zh) 处理器缓存的工作机制的测试方法以及装置
CN115237807B (zh) 程序测试方法、装置及可读存储介质
CN110162966B (zh) 数据处理方法、装置、电子设备及存储介质
CN112363917B (zh) 应用程序调试异常的处理方法、装置、电子设备及介质
CN111427566B (zh) 适于模拟接口平台的数据处理方法和装置、服务器

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant