工具概述
msDebug是用于调试在NPU侧运行的算子程序的一个工具,该工具向算子开发人员提供了在昇腾设备上调试算子的手段。调试手段包括了读取昇腾设备内存与寄存器、暂停与恢复程序运行状态等。用户使用其他拉起算子的方式或msOpST工具在真实的硬件环境中对算子的功能进行测试后,可根据实际测试情况选择是否使用msDebug工具进行功能调试。
功能特性
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(step out)命令会执行完函数内剩余部分,并返回主程序继续执行。 |
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/。
调用场景
- Kernel直调:核函数运行验证的场景。
核函数运行验证的场景,详细信息可参考核函数运行验证简介。具体操作请参见上板调试vector算子。
- 通过AscendCL单算子调用:单算子API执行的场景。
单算子API执行的场景,详细信息可参考单算子API调用。具体操作请参见调用Ascend CL单算子。
- 第三方框架算子调用:Pytorch框架的场景。
通过PyTorch框架进行单算子调用的场景,详细信息可参考单算子适配OpPlugin插件开发 。具体操作请参见调试PyTorch接口调用的算子。
补充说明
msDebug工具还提供了以下拓展程序,具体请参考表3。