如果我有几个go文件需要放在主包中,我如何指定它们在launch.json中编译?我会将它们重构为包。但这个项目正在抵制。
要在命令行上运行它们,我必须用途:
go run main.go stuff.go other.go
如何将其包含在launch.json文件中?
{
"name": "Launch myprog",
"type": "go",
"request": "launch",
"mode": "debug",
"program": "${workspaceRoot}/cmd/myprog/main.go",
"args": ["param"]
},
我已经试过了显而易见的方法。我想做一些调试。
那么...我如何在launch.json中指定编译文件夹中的包,而不仅仅是一个特定的文件?
如果go run main.go
等价于"program": "${workspaceRoot}/cmd/myprog/main.go"
那么,go run .
等于什么?"program": "${workspaceRoot}/cmd/myprog/[?????]"
因为显而易见的事对我不起作用。
谢谢
4条答案
按热度按时间wyyhbhjk1#
使用“程序”:“.”对我来说很有效:
ua4mk5z42#
我的系统一定有其他问题。因为在某个时候一切都开始起作用了…虽然我现在也在使用插件
golang.go-nightly
的夜间版本。它完美地修复了缺失的根调试功能…现在工作正常……
umuewwlo3#
我相信你的问题中混合了一些概念,所以让我尝试一步一步地回答:
launch.json
文件是由vscode自动创建的,以帮助它进行调试,它不是go语言的一部分,也没有定义应用程序将如何运行或编译。更多参考请看How To Debug Go Code with Visual Studio Code。*Compile您的应用程序(
go build
)意味着与特定包相关的所有文件都将转换为二进制文件。看看this article,了解包是如何链接到应用程序编译的。*运行您的应用程序可以使用
go run
来完成,这将具有与编译几乎相同的效果,除了此命令不会生成最终的可共享二进制文件。检查go run vs go build现在,关于你的问题,如果你需要在vscode上启用正确的调试,可以看看gopls-vscode,但是如果你的代码因为依赖于其他文件/包而无法编译,那么可以看看上面提到的关于包的教程。
我希望我能给予你一些帮助。
nr9pn0ug4#
这对我来说是这样的:
1.在包目录中运行
go mod init
以启动模块。这样,go build
就可以在不指定.go文件的情况下工作1.在项目的
launch.json
中,将program
字段的值设置为包的根目录,而不指定任何源文件,即在您情况下,它将是"program": "${workspaceRoot}/cmd/myprog/"