用于调试目标程序代码的方法及装置、电子设备制造方法及图纸

技术编号:32112704 阅读:21 留言:0更新日期:2022-01-29 18:56
一种用于调试目标程序代码的方法及装置、电子设备。该方法包括:调试主程序获取调试过程代码,调试过程代码包括目标程序代码以及插入到目标程序代码中至少一个调试位置的至少一个调试指令;将调试过程代码以及调试辅助程序上载至协处理器,且使协处理器执行调试过程代码;在协处理器运行调试过程代码的过程中,响应于执行至少一个调试指令,从调试过程代码跳转以使协处理器执行调试辅助程序,并由调试辅助程序返回调试过程代码当前的运行状态信息。该方法可以实现图形处理器的程序调试,无需使用硬件中断指令,对图形处理器的硬件条件要求低,不依赖特定硬件指令的支持,适用范围广。广。广。

【技术实现步骤摘要】
用于调试目标程序代码的方法及装置、电子设备


[0001]本公开的实施例涉及一种用于调试由协处理器执行的目标程序代码的方法及装置、电子设备。

技术介绍

[0002]在计算机
及芯片
,通常采用调试程序(Debugger程序)来进行调试。Debugger程序是一种调试工具,可以供程序开发人员检查修改程序问题。通常的操作系统会提供Debugger程序,Debugger程序通过提供逐条执行代码、设置程序断点以及检查断点处变量和内存等功能,帮助程序开发人员跟踪代码运行流程,定位程序异常点。

技术实现思路

[0003]本公开至少一个实施例提供一种用于调试由协处理器执行的目标程序代码的方法,包括:调试主程序获取调试过程代码,其中,所述调试过程代码包括所述目标程序代码以及插入到所述目标程序代码中至少一个调试位置的至少一个调试指令;将所述调试过程代码以及调试辅助程序上载至所述协处理器,且使所述协处理器执行所述调试过程代码;在所述协处理器运行所述调试过程代码的过程中,响应于执行所述至少一个调试指令,从所述调试过程代码跳转以使所述协处理器执行所述调试辅助程序,并由所述调试辅助程序返回所述调试过程代码当前的运行状态信息。
[0004]例如,本公开一实施例提供的方法还包括:所述调试辅助程序向所述调试主程序发送第一通知信息,并基于轮询机制等待获取由所述调试主程序发送的第二通知信息,其中,所述第一通知信息表示所述至少一个调试指令被执行,所述第二通知信息表示所述调试主程序响应了所述第一通知信息。
[0005]例如,本公开一实施例提供的方法还包括:所述调试主程序基于所述轮询机制查询获取由所述调试辅助程序发送的所述第一通知信息。
[0006]例如,在本公开一实施例提供的方法中,所述协处理器包括存储空间,所述存储空间配置为可以从所述协处理器外部和所述协处理器内部进行访问,所述调试辅助程序向所述调试主程序发送所述第一通知信息,并基于所述轮询机制等待获取由所述调试主程序发送的所述第二通知信息,包括:所述调试辅助程序将存储在所述存储空间中的第一信号位设置为有效值;所述调试辅助程序轮询存储在所述存储空间中的第二信号位并判断所述第二信号位是否为有效值,响应于所述第二信号位为有效值,确定获取到所述第二通知信息。
[0007]例如,在本公开一实施例提供的方法中,所述调试主程序基于所述轮询机制查询获取由所述调试辅助程序发送的所述第一通知信息,包括:所述调试主程序轮询所述第一信号位,并判断所述第一信号位是否为有效值,响应于所述第一信号位为有效值,确定获取到所述第一通知信息。
[0008]例如,在本公开一实施例提供的方法中,由所述调试辅助程序返回所述调试过程代码当前的运行状态信息,包括:所述调试辅助程序将所述调试过程代码当前的运行状态
信息存储在所述存储空间中。
[0009]例如,本公开一实施例提供的方法还包括:响应于获取到所述第一通知信息,所述调试主程序访问所述存储空间以获取所述运行状态信息,并将所述第一信号位设置为无效值。
[0010]例如,本公开一实施例提供的方法还包括:基于所述运行状态信息,所述调试主程序执行打印操作和/或接收指令操作。
[0011]例如,在本公开一实施例提供的方法中,所述调试位置表示调试过程代码的断点,基于所述运行状态信息,所述调试主程序执行所述打印操作和/或所述接收指令操作,包括:判断所述调试指令所在的调试位置表示的断点是否命中;响应于所述断点命中,接收用户输入的指令以作为待执行指令;响应于所述断点未命中,将继续执行指令设置为所述待执行指令;响应于所述待执行指令为打印指令,根据标准调试文件打印所述运行状态信息后继续接收所述用户输入的指令;响应于所述待执行指令不是所述打印指令,将所述待执行指令存入所述存储空间后向所述调试辅助程序发送所述第二通知信息。
[0012]例如,在本公开一实施例提供的方法中,判断所述调试指令所在的调试位置表示的断点是否命中,包括:响应于所述断点处于启用状态且不是条件断点,确定所述断点命中;响应于所述断点处于所述启用状态且是所述条件断点,并且所述条件断点对应的条件成就,确定所述断点命中。
[0013]例如,在本公开一实施例提供的方法中,向所述调试辅助程序发送所述第二通知信息,包括:所述调试主程序将存储在所述存储空间中的所述第二信号位设置为有效值。
[0014]例如,本公开一实施例提供的方法还包括:响应于获取到所述第二通知信息,所述调试辅助程序访问所述存储空间以获取所述待执行指令,并将所述第二信号位设置为无效值。
[0015]例如,本公开一实施例提供的方法还包括:根据所述待执行指令的类型,确定是否从所述调试辅助程序跳转以使所述协处理器恢复执行所述调试过程代码。
[0016]例如,在本公开一实施例提供的方法中,根据所述待执行指令的类型,确定是否从所述调试辅助程序跳转以使所述协处理器恢复执行所述调试过程代码,包括:响应于所述待执行指令为所述继续执行指令或单步执行指令,从所述调试辅助程序跳转至所述调试过程代码,并向所述调试主程序发送第三通知信息,其中,所述第三通知信息表示所述调试辅助程序响应了所述待执行指令;响应于所述待执行指令不是所述继续执行指令且不是所述单步执行指令,执行所述待执行指令后向所述调试主程序发送所述第三通知信息,并基于所述轮询机制获取由所述调试主程序发送的所述第二通知信息。
[0017]例如,在本公开一实施例提供的方法中,向所述调试主程序发送所述第三通知信息,包括:所述调试辅助程序将存储在所述存储空间中的第三信号位设置为有效值。
[0018]例如,本公开一实施例提供的方法还包括:所述调试主程序基于所述轮询机制查询获取由所述调试辅助程序发送的所述第三通知信息。
[0019]例如,在本公开一实施例提供的方法中,所述调试主程序基于所述轮询机制查询获取由所述调试辅助程序发送的所述第三通知信息,包括:所述调试主程序轮询所述第三信号位,并判断所述第三信号位是否为有效值,响应于所述第三信号位为有效值,确定获取到所述第三通知信息。
[0020]例如,本公开一实施例提供的方法还包括:响应于获取到所述第三通知信息,根据所述待执行指令的类型,确定所述调试主程序的执行分支。
[0021]例如,在本公开一实施例提供的方法中,根据所述待执行指令的类型,确定所述调试主程序的执行分支,包括:判断所述待执行指令是否为所述继续执行指令或所述单步执行指令;响应于所述待执行指令是所述继续执行指令或所述单步执行指令,基于所述轮询机制获取由所述调试辅助程序发送的所述第一通知信息;响应于所述待执行指令不是所述继续执行指令且不是所述单步执行指令,继续接收所述用户输入的指令。
[0022]例如,本公开一实施例提供的方法还包括:响应于用户输入的指令为单步执行指令,基于标准调试文件,以所述目标程序代码中对应于目标程序下一行语句的代码处作为所述调试位置,插入所述调试指令,其中,所述调试位置表示的断点默认为启用状态。...

【技术保护点】

【技术特征摘要】
1.一种用于调试由协处理器执行的目标程序代码的方法,包括:调试主程序获取调试过程代码,其中,所述调试过程代码包括所述目标程序代码以及插入到所述目标程序代码中至少一个调试位置的至少一个调试指令;将所述调试过程代码以及调试辅助程序上载至所述协处理器,且使所述协处理器执行所述调试过程代码;在所述协处理器运行所述调试过程代码的过程中,响应于执行所述至少一个调试指令,从所述调试过程代码跳转以使所述协处理器执行所述调试辅助程序,并由所述调试辅助程序返回所述调试过程代码当前的运行状态信息。2.根据权利要求1所述的方法,还包括:所述调试辅助程序向所述调试主程序发送第一通知信息,并基于轮询机制等待获取由所述调试主程序发送的第二通知信息,其中,所述第一通知信息表示所述至少一个调试指令被执行,所述第二通知信息表示所述调试主程序响应了所述第一通知信息。3.根据权利要求2所述的方法,还包括:所述调试主程序基于所述轮询机制查询获取由所述调试辅助程序发送的所述第一通知信息。4.根据权利要求3所述的方法,其中,所述协处理器包括存储空间,所述存储空间配置为可以从所述协处理器外部和所述协处理器内部进行访问,所述调试辅助程序向所述调试主程序发送所述第一通知信息,并基于所述轮询机制等待获取由所述调试主程序发送的所述第二通知信息,包括:所述调试辅助程序将存储在所述存储空间中的第一信号位设置为有效值;所述调试辅助程序轮询存储在所述存储空间中的第二信号位并判断所述第二信号位是否为有效值,响应于所述第二信号位为有效值,确定获取到所述第二通知信息。5.根据权利要求4所述的方法,其中,所述调试主程序基于所述轮询机制查询获取由所述调试辅助程序发送的所述第一通知信息,包括:所述调试主程序轮询所述第一信号位,并判断所述第一信号位是否为有效值,响应于所述第一信号位为有效值,确定获取到所述第一通知信息。6.根据权利要求5所述的方法,其中,由所述调试辅助程序返回所述调试过程代码当前的运行状态信息,包括:所述调试辅助程序将所述调试过程代码当前的运行状态信息存储在所述存储空间中。7.根据权利要求6所述的方法,还包括:响应于获取到所述第一通知信息,所述调试主程序访问所述存储空间以获取所述运行状态信息,并将所述第一信号位设置为无效值。8.根据权利要求7所述的方法,还包括:基于所述运行状态信息,所述调试主程序执行打印操作和/或接收指令操作。9.根据权利要求8所述的方法,其中,所述调试位置表示调试过程代码的断点,基于所述运行状态信息,所述调试主程序执行所述打印操作和/或所述接收指令操作,包括:判断所述调试指令所在的调试位置表示的断点是否命中;响应于所述断点命中,接收用户输入的指令以作为待执行指令;
响应于所述断点未命中,将继续执行指令设置为所述待执行指令;响应于所述待执行指令为打印指令,根据标准调试文件打印所述运行状态信息后继续接收所述用户输入的指令;响应于所述待执行指令不是所述打印指令,将所述待执行指令存入所述存储空间后向所述调试辅助程序发送所述第二通知信息。10.根据权利要求9所述的方法,其中,判断所述调试指令所在的调试位置表示的断点是否命中,包括:响应于所述断点处于启用状态且不是条件断点,确定所述断点命中;响应于所述断点处于所述启用状态且是所述条件断点,并且所述条件断点对应的条件成就,确定所述断点命中。11.根据权利要求9所述的方法,其中,向所述调试辅助程序发送所述第二通知信息,包括:所述调试主程序将存储在所述存储空间中的所述第二信号位设置为有效值。12.根据权利要求11所述的方法,还包括:响应于获取到所述第二通知信息,所述调试辅助程序访问所述存储空间以获取所述待执行指令,并将所述第二信号位设置为无效值。13.根据权利要求12所述的方法,还包括:根据所述待执行指令的类型,确定是否从所述调试辅助程序跳转以使所述协处理器恢复执行所述调试过程代码。14.根据权利要求13所述的方法,其中,根据所述待执行指令的类型,确定是否从所述调试辅助程序跳转以使所述协处理器恢复执行所述调试过程代码,包括:响应于所述待执行指令为所述继续执行指令或单步执行指令,从所述调试辅助程序跳转至所述调试过程代码,并向所述调试主程序发送第三通知信息,其中,所述第三通知信息表示所述调试辅助程序响应了所述待执行...

【专利技术属性】
技术研发人员:ꢀ七四专利代理机构
申请(专利权)人:上海壁仞智能科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1