新手问题 关于转vscode 使用过程的几点疑惑

cooppor · 2016年10月15日 · 最后由 doob 回复于 2017年03月14日 · 547 次阅读

看到有篇问答《大家说说看都用啥写 Go》,发现用 vscode 的人越来多了,于是打算尝试一下。

安装完成后,装了gocode, godef, go-outline,go-symbols,golint,gopkgs,guru,gorename,goreturns,gotests,dlv等等一系列命令行工具,按照网文简单的配置了下工作区设置

// 将设置放入此文件中以覆盖默认值和用户设置。
{
    "files.autoSave": "onFocusChange",
    "go.buildOnSave": true,
    "go.lintOnSave": true,
    "go.vetOnSave": true,
    "go.buildTags": "",
    "go.buildFlags": [],
    "go.lintFlags": [],
    "go.vetFlags": [],
    "go.coverOnSave": false,
    "go.useCodeSnippetsOnFunctionSuggest": false,
    "go.formatOnSave": true,
    "go.formatTool": "goreturns",
    "go.goroot": "/usr/local/go",
    "go.gopath": "path/to/gopath(略)",
    "go.gocodeAutoBuild": true
}

开始使用 vsocde, 在体验过程中,有几个地方有点疑惑

  • 自己项目内的包、结构、方法、变量等等怎么设置才能进行补全提示,必须也要安装一下自己的项目吗?

  • 开启调试模式的时候总是报could not launch process: could not fork/exec异常 详细如下:

    2016/10/15 10:41:13 server.go:71: Using API v1
    2016/10/15 10:41:13 debugger.go:61: launching process with args: [./debug]
    could not launch process: could not fork/exec
    

    里面的这个debug文件,在刚安装好 vscode 的时候,我尝试开启调试的时候,在项目根目录下看到过,再后来就不知道怎么没有了,也不知道这个是要如何生成。

其他的暂时还没有,有了再研究。希望大家帮我解答一下,谢谢。

更多原创文章干货分享,请关注公众号
  • 加微信实战群请加微信(注明:实战群):gocnio

我的项目内的结构,方法,变量等都会提示自动补全啊,前提需要设置 gopath,至于调试我就不懂了,调试我是在终端用 dlv 调试的

谢回复,我刚才试了下,项目内的代码确实可以提示了! 不知道什么原因昨天晚上折腾的时候没有生效。

dlv 重新装一下

GOPATH 和 GOROOT 是必须要设置的。vscode 好像必须把你的 godef 之类的执行文件放到 GOPATH 的 bin 目录下,且 gopath 的 bin 目录也必须设置到系统的 PATH 目录下。

vscode 调试功能没有使用过,建议使用 panic 和 log 包的函数来调试。

推荐 idea 和 idea golang plugin 来写 golang 代码,但是唯一缺点是 idea 比较大,占内存,不过现在大家的电脑至少都有 2 个 G 的内存吧,所以也还好。

在 gopath 中默认已经安装了一个 dlv,把这个 dlv 删掉就可以了 我尝试了多次,也尝试了 GitHub 上 issues 中提到的一些解决方案,都不行,最后在 golangtc 中看到了一个回复,把 GOPATH/bin/dlv 删掉之后,就可以了 如果还是不行,可以把 brew install 的那个先 brew uninstall 掉,然后重新 brew install

vscode 用 dlv 调试还是挺好用的 (1)配置好 tasks.json: { "version": "0.1.0", "command": "go", "isShellCommand": true, "showOutput": "always", "args": ["run","${file}"], "isBuildCommand": true, "taskSelector": "/t:" } (2)配置 launch.json 里面有一项:"program": "${workspaceRoot}/final.go", final.go 配置成自己的 main 入口的文件 "port": 8080,//端口配置成自己的

"host": "127.0.0.1",//配置成自己的 (3) F5 调试

// Specifies the GOPATH to use when no environment variable is set.
    "go.gopath": "E:\\golang\\golibs;D:\\golang\\path;${workspaceRoot}",

其实有关键字:${workspaceRoot}。这样就可以把当前目录设置为工作区了。 我是从 sublime text 转过来的,我发现控制台直接做 go build 的时候,非常方便,但在 VSCODE 里,没有这样的功能,所以我就自己做了一个插件来适配:go-builder-help

这样我只需要用快捷键 ctrl+g+t 弹出 terminal,并设置了当前的一些环境变量(gopath 或是交叉编译时的 goos 等)。也可以使用 ctrl+g+b 弹出控制台。

控制台一般用于运行 go build 后,做为运行进程存在。

mac 的话 dlv 要用 brew 安装,不然会有权限问题

http://www.golangtc.com/t/56fe3d46b09ecc66b9000218

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册