Windows下,如果要单步调试Bash脚本,可以使用VS Code(v1.95.1)配合插件Bash Debug(本文使用的版本是 v0.3.9),WSL环境如下:
WSL 版本: 2.3.24.0
内核版本: 5.15.153.1-2
WSLg 版本: 1.0.65
MSRDC 版本: 1.2.5620
Direct3D 版本: 1.611.1-81528511
DXCore 版本: 10.0.26100.1-240331-1435.ge-release
Windows 版本: 10.0.19045.5011
- 先安装 WSL,参考 玩转WSL
- 打开VS Code,安装插件 Bash Debug:
- 打开项目或 sh 文件,切换到 Debug,点击 "创建 launch.json 文件",然后选择 "Bash Debug",如下图:
- 在创建的文件中,添加 "terminalKind": "external", 这一行,如下图:
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "bashdb",
"request": "launch",
"name": "Bash-Debug (simplest configuration)",
"terminalKind": "external",
"program": "${file}"
}
]
}
如果不加这一行,那么被调试的bash,是无法接受命令行输入的,只能调试简单的输出的bash脚本。
terminalKind 可以为 debugConsole(无法调试输入),integrated(集成的Bash Debug Console),external(推荐,单独打开终端窗口运行脚本) - 此时就可以正常调试 sh 文件了,点击后,会出现 [Bash Debug Console]:
如果启动调试,出现错误:
bash: -c: line 1: conditional binary operator expected
bash: -c: line 1: syntax error near `-p'
解决方法:
修改launch.json中,terminalKind,从 integrated 改为 external。
调试的时候如果报错:
$'\r': command not found
syntax error near unexpected token `$'{\r''
则说明 sh 文件,是Windows文件换行格式(\r\n),请修改文件换行为Linux(\n)即可,可以使用Notepad++更换换行格式。