工具概述
用户使用其他拉起算子的方式或msOpST工具在真实的硬件环境中对算子的功能进行测试后,可根据实际测试情况选择是否使用msDebug工具进行功能调试。
msDebug是用于调试在NPU侧运行的算子程序的一个工具,该工具向算子开发人员提供了在昇腾设备上调试算子的手段。调试手段包括了读取昇腾设备内存与寄存器、暂停与恢复程序运行状态等。
 功能特性
msDebug工具支持调试Ascend C算子(包括Vector、Cube以及mix融合算子)程序,用户可根据实际情况进行选择,具体请参见表1。
命令汇总
命令  | 
命令缩写  | 
描述  | 
示例  | 
|---|---|---|---|
breakpoint set -f filename -l linenum  | 
b  | 
增加断点,filename为算子实现代码文件*.cpp,linenum为代码文件对应的具体行号。  | 
b add_custom.cpp:85  | 
run  | 
r  | 
运行程序。  | 
r  | 
continue  | 
c  | 
继续运行。  | 
c  | 
print variable  | 
p  | 
打印变量。  | 
p zLocal  | 
frame variable  | 
var  | 
显示当前作用域内的所有局部变量。  | 
var  | 
memory read  | 
x  | 
读内存。  | 
x -m GM -f float16[] 0x00001240c0037000 -c 2 -s 128 
  | 
ascend info devices  | 
-  | 
查询device信息。  | 
ascend info devices  | 
ascend info cores  | 
-  | 
查询算子所运行的aicore相关信息。  | 
ascend info cores  | 
ascend info tasks  | 
-  | 
查询算子所运行的task相关信息。  | 
ascend info tasks  | 
ascend info stream  | 
-  | 
查询算子所运行的stream相关信息.  | 
ascend info stream  | 
ascend info blocks  | 
-  | 
查询算子所运行的block相关信息。  | 
显示所运行的blocks相关信息: 
ascend info blocks 显示所运行的blocks在当前中断处的代码: 
ascend info blocks -d  | 
ascend aic id  | 
-  | 
切换调试器所聚焦的cube核。  | 
ascend aic 1  | 
ascend aiv id  | 
-  | 
切换调试器所聚焦的vector核。  | 
ascend aiv 5  | 
“CTRL+C”  | 
-  | 
手动中断算子运行程序并回显中断位置信息。  | 
通过键盘输入。  | 
register read  | 
re r  | 
读取寄存器值;-a 读取所有寄存器值;$REG_NAME 读取指定名称的寄存器值;  | 
register read -a re r $PC  | 
thread step-over  | 
next或n  | 
在同一个调用栈中,移动到下一个可执行的代码行。  | 
n  | 
thread step-in  | 
step或s  | 
使用step in命令可进入到函数内部进行调试。  | 
s  | 
thread step-out  | 
finish  | 
使用finish命令会执行完函数内剩余部分,并返回主程序继续执行。  | 
finish  | 
target modules add <kernel.o>  | 
image add [kernel.o]  | 
用于PyTorch框架调用算子时,导入算子调试信息 。  说明:  
当程序执行run命令后,需先执行image add命令导入调试信息。然后,再执行image load命令使导入的调试信息生效。  | 
image add xx.o  | 
target modules load --file <kernel.o> --slide <address>  | 
image load -f <kernel.o> -s <address>  | 
用于PyTorch框架调用算子时,加载算子调试信息,使导入的调试信息生效。  | 
image load -f xx.o -s 0  | 
help msdebug_command  | 
-  | 
输出对应工具命令的帮助信息。  说明:  
打印信息将会展示该命令的功能描述、使用语法以及参数选项。 如核切换命令的帮助信息如下所示: 
(msdebug) help ascend aic change the id of the focused ascend aicore. Syntax: ascend aic <id> 如ascend info blocks命令的帮助信息如下所示: (msdebug) help ascend info blocks
show blocks overall info.
Syntax: ascend info blocks
Command Options Usage:
  ascend info blocks [-d]
       -d ( --details )
            Show stopped states for all blocks.
 | 
help run  | 
 通过键入help命令可查看msDebug工具支持的所有命令。表2之外的命令属于开源调试器lldb实现,使用需注意相关风险,详细使用方法可参考lldb官方文档https://lldb.llvm.org/。
调用场景
- 通过AscendCL单算子调用:单算子API执行的场景。
 - 第三方框架算子调用:Pytorch框架的场景。