MindStudio Debug VSCode Plugin
介绍
MindStudio Debug VSCode Plugin基于msdebug上板调试算子工具提供VSCode可视化调试昇腾算子功能。
附:算子开发编程语言Ascend C简介
特性
- 断点调试(设置/删除/禁用/启用断点)
- 单步执行调试(逐行执行/内部执行/跳出函数)/继续/暂停/重启
- 查看变量/寄存器/堆栈/断点信息,监视器支持执行表达式
- 内存查询
- 核切换
规格要求
- VSCode (v1.88版本及以上)
- VSCode已安装远程登录插件
- 支持平台: Linux
- 调试AscendC算子程序时,Linux环境已安装CANN工具包(含算子调试器)
- 仅支持调试AscendC算子,且算子经过调试模式重新编译后才能调试
- 当前支持的CANN包最低版本:
- 社区版: 8.0.RC3.alpha001
- 商用版:8.0.RC3
约束
功能
软件包下载和完整性校验
- (推荐)从插件市场直接在线安装
- 若软件包从插件市场下载后计划后续本地安装,安装前建议进行完整性校验:
sha256sum Ascend.MindStudio-Debug-VSCode-Plugin-{version}.vsix # 验证vsix包,若校验码一致,则vsix包在下载中没有受损
快速使用
- 打开VSCode IDE界面,安装远程登录插件(如Remote-SSH)
- IDE界面远程SSH登录算子开发环境,打开
已编译
的算子工程文件(本插件不具备编译功能)
- 安装
MindStudio Debug VSCode Plugin
插件
(推荐)IDE界面插件市场在线安装
IDE界面离线本地安装
- 插件.vsix文件上传linux环境
- 展开IDE界面左侧边栏的插件菜单
- 点击右上角...图标,选择Install from VSIX...选项,选择本地的插件文件进行安装
- 插件.vsix文件上传linux环境
- 后台输入命令安装插件文件: code --install-extension /xx_dir/MindStudio-Debug-VSCode-Plugin-1.0.2.vsix
- 点开debug侧边工具栏,若未生成.vscode/launch.json文件,则根据提示点击生成launch.json文件(弹窗中调试器选择MSDebug)
- 需要注意vscode
当前打开目录
的选择,因为当前目录会影响launch.json文件中cwd参数的值。若msdebug的调试参数文件和打断点的源码文件不直接在同一个目录下(比如源码在src目录下,测试用例在test目录下),则建议切换当前目录为共同的父目录下,再创建.vscode/launch.json文件。
- 在
.vscode/launch.json
中添加调试配置(格式参考下面推荐配置)
(可选)配置launch.json的environmentScripts参数时,若用户需要配置复杂逻辑的环境变量执行脚本(脚本包含除了export key=value以外的逻辑),需要执行以下步骤:
- 用户登录linux终端(如打开vscode IDE的终端栏),先执行设置环境变量的相关脚本,例如
source /xx/set_env1.sh; source /yy/set_env2.sh
等
- 接着输入
env> ${path_to_project}/.vscode/.env
命令并执行,手动导出环境变量信息到.env
配置文件中,供后续插件读取
- 最后将生成的
.env
文件路径:/xx/xx/.vscode/.env
(绝对路径格式),配置到launch.json的environmentScripts参数中,配置方式参考后面章节
- debug侧边工具栏中,选择已配置的调试器,点击
debug
或按F5
启动调试
{
"configurations": [
{
"name": "xx-debug",
"type": "msdebug-mi",
"request": "launch",
"cwd": "${workspaceFolder}",
"target": "/xxx/xx/xx_operator",
"targetArgs": [
"arg1",
"arg2"
],
"msdebugMiPath": "/xx/x/msdebug-mi",
"environmentScripts": [
"/xxx/xx/Ascend/ascend-toolkit/set_env.sh",
"/xxx/xx/xx-user-bussiness/set_env.sh",
"/xx/xxx/project/.vscode/.env"
],
"environment": [
{
"name": "LD_LIBRARY_PATH",
"value": "/xx/x/lib:${LD_LIBRARY_PATH}"
},
{
// 可选:通过配置LAUNCH_KERNEL_PATH环境变量,指定算子加载路径,导入调试信息
"name": "LAUNCH_KERNEL_PATH",
"value": "/xx/x/my_kernel.o"
}
]
}
]
}
name
调试插件的名称
type
固定值"msdebug-mi"
request
固定值"launch"
cwd
调试器启动的工作目录。注意:当target和targetArgs参数不为绝对路径时,cwd参数在target和targetArgs参数上生效。${workspaceFolder}
为vscode IDE的当前打开目录。
target
(必要配置项)被调试的可执行文件的路径。target可设为算子二进制文件,或者python等二进制命令,建议配置绝对路径
targetArgs
可选配置,被调试的算子可执行文件的参数列表。举例"targetArgs": ["arg1","arg2"]
,底层msdebug-mi调试命令调用效果等价于: # msdebug ${target} ${arg1} ${arg2}
,若不配置target和targetArgs的绝对路径,则默认加上cwd的路径前缀。
printMiInput
可选配置,打印msdebug-mi的输入命令日志。默认为false建议不配置,避免生成大量冗余日志
printMiOutput
可选配置,打印msdebug-mi的命令输出信息日志。默认为false建议不配置,避免生成大量冗余日志
skipEnvCheck
可选配置,插件初始化加载时是否跳过环境校验。默认为false建议不配置
msdebugMiPath
可选配置,调试器路径,不配置默认为$ASCEND_TOOLKIT_HOME/tools/msdebug/bin/msdebug-mi
environmentScripts
可选配置,为包含msdebug启动所需的环境变量的脚本数组(默认支持配置内容仅含export key=value的脚本文件,而含复杂逻辑脚本的environmentScripts配置方法参考快速使用-第6点),依次加载数组中各脚本中的环境变量。若有重复设置可能会产生值覆盖。
environment
可选配置,为包含自定义环境变量的对象数组,在加载完environmentScripts
脚本中的环境变量后依次加载environment
中的环境变量,格式需满足:[{"name": "xxx", "value":"yyy"}]
。若和environmentScripts配置的脚本中有重复设置的环境变量可能会产生值覆盖。
断点调试(设置/删除/禁用/启用断点)
- 可以在算子程序行号显示处添加、删除、禁用、开启或关闭断点,也可以在左侧边栏中的底部断点工具栏执行相同操作。
- 支持调试cce文件类型,需要设置vscode系统配置:(1)
Ctrl + Shift + P
打开命令窗口,输入open workspace settings
,打开工作区配置 (2)搜索Files:Associations
,添加键值对[*.cce, cpp]
新增对.cce
文件类型的支持。
单步执行调试(逐行执行/内部执行/跳出函数)/继续/暂停/重启
- 可以单击顶部调试工具栏上的图标控制程序,包括单步执行、步入、步出、继续、暂停、重启或停止程序的操作。
查看变量/寄存器/堆栈/断点信息,监视器支持执行表达式
- 启动调试后,程序会停止在断点,当进程处于停止状态时,可以在IDE界面左侧查看当前线程的变量、堆栈、监视器和断点信息。其中监视器支持执行表达式。
内存查询
- 变量右键内存查询
- 调试停在断点时,光标移到代码编辑区的变量上,
右键并点击Read Memory菜单
跳转到内存查看页面,支持切换数据类型和列数改变内存展示效果
- 自定义内存查看
点击右下角Read Memory菜单项
也可跳转到内存查看页面。支持手动输入内存位置、内存地址、内存大小来进行自定义内存位置的内存查看
核切换
- 左下角展开KERNEL FOCUS工具栏,可查看核状态,高亮行是当前所在核;点击其他行数据进行切核