工具概述
msDebug是用于调试在NPU侧运行的算子程序的一个工具,该工具向算子开发人员提供了在昇腾设备上调试算子的手段。调试手段包括了读取昇腾设备内存与寄存器、暂停与恢复程序运行状态等。用户使用其他拉起算子的方式或msOpST工具在真实的硬件环境中对算子的功能进行测试后,可根据实际测试情况选择是否使用msDebug工具进行功能调试。
 
 - 若要使能msDebug工具,需通过以下两种方法安装NPU驱动固件(CANN 8.1.RC1之后的版本且驱动为25.0.RC1之后的版本,推荐使用方法一):
- 调试通道权限较大,存在安全风险,请谨慎使用,生产环境不推荐使用,使用本调试工具即代表认可并接受该风险。
功能特性
msDebug工具支持调试所有的昇腾算子,包含Ascend C算子(Vector、Cube以及mix融合算子)程序,用户可根据实际情况进行选择,具体请参见表1。
命令汇总
 
 - 用户需自行保证可执行文件或用户程序(application)执行的安全性。- 建议限制对可执行文件或用户程序(application)的操作权限,避免提权风险。
- 不建议进行高危操作(删除文件、删除目录、修改密码及提权命令等),避免安全风险。
 
- 通过键入help命令可查看msDebug工具支持的所有命令。表2之外的命令属于开源调试器lldb实现,使用需注意相关风险,详细使用方法可参考lldb官方文档https://lldb.llvm.org/。
| 命令 | 命令缩写 | 描述 | 示例 | 
|---|---|---|---|
| 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 | 
| msdebug --core corefile | - | 用于加载coredump文件。 | msdebug --core corefile | 
| ascend info summary | - | 用于查看coredump文件信息。 | ascend info summary | 
| 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 | 
调用场景
- Kernel直调算子开发:Kernel直调。
补充说明
msDebug工具还提供了以下拓展程序,具体请参考表3。