昇腾社区首页
中文
注册

功能特性

通过NPU侧可执行文件<kernel_name>_npu或调用算子的python脚本,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
  • -m:指定内存位置,支持GM/UB/L0A/L0B/L0C/L1/FB
  • -s:指定每行打印字节数
  • -c:指定打印的行数
  • -f:指定打印的数据类型
  • 0x00001240c0037000:需要读取的内存地址,请根据实际环境进行替换

ascend info devices

-

查询device信息。

ascend info devices

ascend info cores

-

查询算子所运行的aicore相关信息。

ascend info cores

ascend info tasks

-

查询算子所运行的task相关信息。

ascend info tasks

ascend info blocks

-

查询算子所运行的block相关信息。

显示所运行的blocks相关信息:
ascend info blocks 
显示所运行的blocks在当前中断处的代码:
ascend info blocks -d

ascend info stream

-

查询算子所运行的stream相关信息。

ascend info stream

ascend aic id

-

切换调试器所聚焦的cube核。

ascend aic 1

ascend aiv id

-

切换调试器所聚焦的vector核。

ascend aiv 5

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

-

输出对应工具命令的帮助信息。

help run

通过键入help命令可查看msdebug工具支持的所有命令。表1之外的命令属于开源调试器lldb实现,使用需注意相关风险,详细使用方法可参考lldb官方文档https://lldb.llvm.org/

使用约束

  • 若要使能msdebug工具需协同HDK驱动一起生效,安装HDK驱动时需要与--debug参数配合使用,具体安装方法请参考驱动包的安装
  • 算子调试前需启用调试编译选项重新编译,使算子二进制带上调试信息。
  • 一个Device设备仅支持对一个算子应用程序进行调试,且不推荐同时运行其他程序。
  • 仅支持对单stream、单kernel的算子进行调试。例如,使用PyTorch等框架调用单算子场景时,避免使用torch.ones()等命令调用到其他算子。
  • 调试算子时,溢出检测功能会关闭。