一种异构众核软件调试装置及调试方法制造方法及图纸

技术编号:32753134 阅读:15 留言:0更新日期:2022-03-23 18:48
本发明专利技术公开一种异构众核软件调试装置及调试方法,包括以下配置:从核调试代理线程sdbth:sdbth由主核OS创建,运行在被跟踪进程tracee的地址空间内,循环执行一个低优先级的睡眠;在调试器进程debug中增加一套从核架构数据和一个切换开关;从核架构数据包括反汇编、硬件寄存器的读写、硬件断点的插入和删除操作、软件单步算法中下一条指令的地址计算;切换开关,用于控制主核与从核两种处理器架构的切换。本发明专利技术可实现对异构并行代码的执行跟踪和错误定位。踪和错误定位。踪和错误定位。

【技术实现步骤摘要】
一种异构众核软件调试装置及调试方法


[0001]本专利技术涉及一种异构众核软件调试装置及调试方法,属于高性能计算领域。

技术介绍

[0002]软件调试工具提供断点、单步、打印等基本调试功能,分段执行被调试程序,分段粒度可从一条指令到一段程序,除了一系列调试功能,用户在应用中还可挖掘更多的调试技巧。调试工具是一个体系结构相关的软件,软硬件适配过程比较复杂,处理器的微结构和中断异常机制、操作系统的调试接口、语言编译器的调试信息规范、运行时库等都与之相关,调试工具从单核处理器发展到多核,按照一种固定的处理器硬件架构,来控制和理解程序的运行。现有软件调试工具按照一种固定的处理器硬件架构,来控制和理解程序的运行,同时,依赖的OS调试接口只能面向传统的linux线程,不支持硬件线程的调试。异构众核处理器的两种处理器单元具有不同的微结构和中断机制,这种复杂性使当前所有的开源调试软件既不能支持异构处理器架构,也不能支持从核的软件调试。
[0003]当前,并行计算已广泛采用基于异构众核的低功耗高性能加速计算,而开源社区发布的软件调试器工具仍然处于多核处理器版本,其中Gdb是linux上一个广泛使用、更新活跃的开源软件,支持主流编程语言的源码级调试,支持众多主流多核处理器的软件调试,但是没有发布主流众核芯片的版本,与众核体系结构相关的软件调试技术也很不成熟,这方面的软件发展明显滞后于硬件体系结构的发展。

技术实现思路

[0004]本专利技术的目的是提供一种异构众核软件调试装置及调试方法,其可实现对异构并行代码的执行跟踪和错误定位。
[0005]为达到上述目的,本专利技术采用的技术方案是:提供一种异构众核软件调试装置,其特征在于,包括以下配置:从核调试代理线程sdbth:sdbth由主核OS创建,运行在被跟踪进程tracee的地址空间内,循环执行一个低优先级的睡眠;当从核发出对主核的中断请求时,唤醒sdbth,所述中断请求包含调试中断请求和I/O请求;sdbth被唤醒后,在OS核心态继续执行睡眠的系统调用,并给自己发调试信号;在从核心态返回用户态时,OS检查发现调试信号,并发现进程跟踪标志位TF,于是唤醒调试器进程debug;调试器进程debug被唤醒后,得到对从核程序的执行控制权;如果中断请求是I/O请求,则将中断请求返给进程tracee,按照OS缺省方式处理,即完成I/O请求原来设定的处理过程;如果中断请求是从核调试中断请求,则分析断点现场,返回给用户人工查看从核
程序停在断点的执行状态;在调试器进程debug中增加一套从核架构数据和一个切换开关;从核架构数据包括反汇编、硬件寄存器的读写、硬件断点的插入和删除操作、软件单步算法中下一条指令的地址计算;切换开关,用于控制主核与从核两种处理器架构的切换。
[0006]上述技术方案中进一步改进的方案如下:所述从核调试代理线程sdbth的创建时机包括以下两种情况:在应用程序执行到从核并行初始化时,如果被调试的标志TF已置,则从核运行时库在完成从核资源申请后创建sdbth,在从核资源释放后终止sdbth,否则,不创建sdbth;主核OS增加一个/proc/lwpid/scoreid文件,其中,lwpid是线程号,scoreid是文件名,在创建sdbth时根据申请的从核资源创建其对应的scoreid文件,如果scoreid文件中存放

1,则lwpid指定的线程是主核上其它被调试的用户线程,如果scoreid文件中存放非负的整数,则lwpid表示从核号,该lwpid就是sdbth;在创建sdbth时,在scoreid文件中存放对应的从核号,而其它地方创建的线程,其scoreid文件的数据初始化为

1,表示主核线程;在调试器进程debug执行传统的attach流程之前,对tracee发送一个约定信号,tracee在从核运行时库中执行约定信号的中断处理函数,由中断处理函数创建sdbth,debug在执行传统的detach流程之前,终止sdbth。
[0007]还提供一种异构众核软件调试方法,基于上述的异构众核软件调试装置,其特征在于,包括以下步骤:S1、Debug进程Fork子进程,即tracee进程,置其调试标志TF,建立调试进程与被调试进程的控制关系;S2、tracee进程执行被调试的异构程序,完成从核资源申请和空间初始化;S3、当TF为真,tracee进程创建各从核对应的调试代理线程sdbth,在scorid文件中写入从核核号;S4、Debug进程逐一捕获tracee进程空间的线程;S5、Debug进程发现scorid非负的sdbth线程,建立sdbth与对应从核的控制关系;S6、Debug进程初始化控制从核调试的架构数据;S7、Debug进程根据从核正文段地址范围判断用户设置的断点是主核还是从核的断点;S8、Debug进程按照主核架构,设置主核断点;S9、Debug进程按照从核架构,设置从核断点;S10、Debug进程恢复tracee进程运行;S11、tracee进程运行到达从核硬件断点,发送调试中断给主核;S12、操作系统处理中断,置从核调试中断标志,并发调试信号给sdbth线程;S13、Debug进程被 sdbth的调试信号唤醒,判断中断标志,进行主从核架构数据的切换,将硬件架构数据结构转换切换为从核架构数据结构;S14、Debug进程将硬件现场转换为对应的从核程序现场具体转换方法同主核调试;
S15、Debug进程退出,终止sdbth。
[0008]还提供一种异构众核软件调试方法,基于上述的异构众核软件调试装置,其特征在于,包括以下步骤:S1、Debug进程查到正在运行的异构程序进程号;S2、Debug进程对运行中的tracee进程发送一个约定信号,tracee进入从核运行时库中执行约定信号的中断处理函数,由中断处理函数创建sdbth;S3、Debug进程逐一捕获tracee进程空间的线程;S4、Debug进程发现scorid非负的sdbth线程,建立sdbth与对应从核的控制关系;S5、Debug进程初始化控制从核调试的架构数据;S6、Debug进程根据从核正文段地址范围判断用户设置的断点是主核还是从核的断点;S7、Debug进程按照主核架构,设置主核断点;S8、Debug进程按照从核架构,设置从核断点;S9、Debug进程恢复tracee进程运行;S10、tracee进程运行到达从核硬件断点,发送调试中断给主核;S11、操作系统处理中断,置从核调试中断标志,并发调试信号给sdbth线程;S12、Debug进程被 sdbth的调试信号唤醒,判断中断标志,进行主从核架构数据的切换,将硬件架构数据结构转换切换为从核架构数据结构;S13、Debug进程将硬件现场转换为对应的从核程序现场具体转换方法同主核调试;S14、Debug进程退出,终止sdbth。
[0009]由于上述技术方案的运用,本专利技术与现有技术相比具有下列优点:本专利技术提出了一种异构众核软件调试装置及调试方法,可实现对异构并行代码的执行跟踪和错误定位,且可软件本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种异构众核软件调试装置,其特征在于,包括以下配置:从核调试代理线程sdbth:sdbth由主核OS创建,运行在被跟踪进程tracee的地址空间内,循环执行一个低优先级的睡眠;当从核发出对主核的中断请求时,唤醒sdbth,所述中断请求包含调试中断请求和I/O请求;sdbth被唤醒后,在OS核心态继续执行睡眠的系统调用,并给自己发调试信号;在从核心态返回用户态时,OS检查发现调试信号,并发现进程跟踪标志位TF,于是唤醒调试器进程debug;调试器进程debug被唤醒后,得到对从核程序的执行控制权;如果中断请求是I/O请求,则将中断请求返给进程tracee,按照OS缺省方式处理,即完成I/O请求原来设定的处理过程;如果中断请求是从核调试中断请求,则分析断点现场,返回给用户人工查看从核程序停在断点的执行状态;在调试器进程debug中增加一套从核架构数据和一个切换开关;从核架构数据包括反汇编、硬件寄存器的读写、硬件断点的插入和删除操作、软件单步算法中下一条指令的地址计算;切换开关,用于控制主核与从核两种处理器架构的切换。2.根据权利要求1所述的一种异构众核软件调试装置,其特征在于,所述从核调试代理线程sdbth的创建时机包括以下两种情况:在应用程序执行到从核并行初始化时,如果被调试的标志TF已置,则从核运行时库在完成从核资源申请后创建sdbth,在从核资源释放后终止sdbth,否则,不创建sdbth;主核OS增加一个/proc/lwpid/scoreid文件,其中,lwpid是线程号,scoreid是文件名,在创建sdbth时根据申请的从核资源创建其对应的scoreid文件,如果scoreid文件中存放

1,则lwpid指定的线程是主核上其它被调试的用户线程,如果scoreid文件中存放非负的整数,则lwpid表示从核号,该lwpid就是sdbth;在创建sdbth时,在scoreid文件中存放对应的从核号,而其它地方创建的线程,其scoreid文件的数据初始化为

1,表示主核线程;在调试器进程debug执行传统的attach流程之前,对tracee发送一个约定信号,tracee在从核运行时库中执行约定信号的中断处理函数,由中断处理函数创建sdbth,debug在执行传统的detach流程之前,终止sdbth。3.一种异构众核软件调试方法,基于权利要求1或2所述的异构众核软件调试装置,其特征在于,包括以下步骤:S1、Debug进程Fork子进程,即tracee进程,置其调试标志TF,建立调试进程与被调...

【专利技术属性】
技术研发人员:王敬宇刘勇冯赟龙陈华蓉彭达佳宋佳伟孙川
申请(专利权)人:无锡江南计算技术研究所
类型:发明
国别省市:

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

1