launch.json
{
"version": "0.2.0",
"configurations": [
{
// 使用debug二进制文件的方式debug go代码,原理是使用delve工具把二进制文件中和源码中打上相同位置断点
"name": "fiends test debug", // 显示的debug名字
"type": "go", // 执行的go指令
"request": "launch", // launch:启动,attach:附加
"mode": "exec", // debug 二进制文件,首先要编译
"program": "${workspaceFolder}/xxx_server", // 指定二进制文件所在位置
"console": "integratedTerminal", //VSCode集成终端,即在VSCode内部启动默认终端
"cwd": "${workspaceFolder}", // 工作目录
"args": [ // 传递给程序的参数
"-e", "test",
"-net", "inner",
"-worker", "1"
],
"preLaunchTask": "go_build" // 预执行任务,启动的是task.json中与label对应的脚本
}
]
}
task.json
{
"version": "2.0.0",
"tasks": [
{
// 编译源码为可执行文件
"type": "shell", // 执行类型
"label": "go_build", // 任务名
"command": "go", // 执行的终端命令
"args": [ // 终端指令附带参数
"build",
"-gcflags", "all=-N -l", // 关闭编译优化和内联 防止debug二进制文件和代码位置不一致
"-o", "${workspaceFolder}/xxx_server", // 编译输出二进制文件的文件路径
"${workspaceFolder}/main", // main.go所在文件夹
],
"dependsOn": ["clean_bin"], // 依赖的脚本 里面也是根据label查找任务,会在该脚本执行之前调用
},
{
// 清空之前生成的可执行文件,防止debug旧文件
"type": "shell",
"label": "clean_bin",
"command": "rm",
"args": [
"-rf", "${workspaceFolder}/xxx_server",
]
},
]
}