我正在使用 delve go 调试器来调试一些代码。当我尝试打印字符串变量时,它给了我一个缩写版本。
(dlv) print myString
"my string...+539 more"
Run Code Online (Sandbox Code Playgroud)
我如何让它打印完整的字符串?
Hello World教程,演示如何使用Visual Studio(又名VScode)设置VS Code来调试Golang App Engine代码
这是使用AppEngine文档中的Helloworld代码:
go get -u -d github.com/directmeasure/VScodeDebugGoAppEngine.git
Run Code Online (Sandbox Code Playgroud)
在运行osX 10.13.3的Mac上运行.
我测试了代码,服务器在本地工作.我正在试图弄清楚如何使用调试器输入代码,以便我可以学习如何在其他项目中使用调试器.
这些是我能找到的使用VScode与GAE最好的说明,但他们似乎是过时的基础上更新Golang(如开关Gcloud,-go_debugging标志和目录结构的变化):
https://medium.com/@dbenque /调试-golang-应用服务引擎模块与-视觉工作室码85b3aa59e0f
以下是我采取的步骤:
添加到.bash_profile
export BASEFOLDER="/Users/Bryan/google-cloud-sdk/" .
export GOROOT="/usr/local/go" # this shoudln't have to be set with current Version, doing it to follow the tutorial .
Run Code Online (Sandbox Code Playgroud)我是如何尝试运行调试器的:
dev_appserver.py --go_debugging=true app.yaml
Run Code Online (Sandbox Code Playgroud)
ps aux | grep _go_app
dlv attach <#using the PID from the server binary>
Run Code Online (Sandbox Code Playgroud)
Delve成功附加到二进制文件.
当我启动调试会话时,蓝色进度条永远不会停止水平扫描.
VARIABLE侧栏永远不会填充hello.go中的变量
断点设置为hello.go:第21行
Debug REPL终端显示:
Verbose logs are written to:
/var/folders/mw/0y88j8_54bjc93d_lg3120qw0000gp/T/vscode-go-debug.txt
16:02:31, 2018-4-5 …Run Code Online (Sandbox Code Playgroud) 我已经为VS Code安装了Go扩展,但无法使其正常工作.
"dlv debug"可以在终端上正常工作.
dlv debug src/github.com/user/hello
Run Code Online (Sandbox Code Playgroud)
的launch.json:
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch",
"type": "go",
"request": "launch",
"mode": "debug",
"program": "${workspaceRoot}",
"env": {},
"args": []
}
]
}
Run Code Online (Sandbox Code Playgroud)
你知道怎么设置吗?
你如何停止钻研无头调试器?
注意:我从 mac 上的 docker 容器运行它,并像这样安装:
go get -u github.com/derekparker/delve/cmd/dlv
Run Code Online (Sandbox Code Playgroud)
从这里开始就可以了,但是您如何再次停止它。
dlv debug --headless --listen=:2345
Run Code Online (Sandbox Code Playgroud)
ctrl + c 等不起作用 - 有什么特别的技巧吗?
我尝试sudo dlv debug在 Arch Linux 上运行,但不断收到以下错误:
error obtaining VCS status: exit status 128
Use -buildvcs=false to disable VCS stamping.
exit status 1
Run Code Online (Sandbox Code Playgroud)
当我删除 .git 文件夹时,sudo dlv debug它按预期运行,所以我认为这可能是 git 的配置问题?!
我正在使用"go test -v "来运行一系列单元测试.我想用delve调试它们.当我尝试运行调试器时,出现"无法调试非主程序包"错误.那么,我如何使用delve调试器调试单元测试?
我正在尝试设置一个可以远程连接的无头深度调试器。
我无法找到一种方法来启动调试服务器,而该服务器不会暂停我正在调试的应用程序。
我一直在使用,dlv attach --headless=true --listen=:2345 attach 32但这会暂停该过程。或者,如果这允许应用程序二进制文件运行,
我可以使用。dlv --headless=true --listen=:2345 exec app
不知道这个init文件能不能实现这样的功能?我找不到任何有关其实际情况的文档。
如何更新 Go Delve 调试器?当我尝试设置 api 版本时收到以下错误:
unknown flag: --api-version
我的dlv外表已经过时了:
$dlv version
Delve Debugger
Version: 0.11.0-alpha
Build:
Run Code Online (Sandbox Code Playgroud)
但我不知道如何升级它。我已经尝试过go get -u github.com/go-delve/delve/cmd/dlv和go get -u github.com/derekparker/delve/cmd/dlv,但都没有成功。我还尝试了以下建议make install:
$ git clone https://github.com/go-delve/delve.git $GOPATH/src/github.com/go-delve/delve
$ cd $GOPATH/src/github.com/go-delve/delve
$ make install
Run Code Online (Sandbox Code Playgroud)
但这似乎没有效果:
$ dlv version
Delve Debugger
Version: 0.11.0-alpha
Build:
Run Code Online (Sandbox Code Playgroud)
我的 go 版本是go version go1.10.1 linux/amd64,我的操作系统详细信息如下:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 8.11 (jessie)
Release: 8.11
Codename: …Run Code Online (Sandbox Code Playgroud) 我有一个带有用于 Windows 的 Linux 子系统的 Visual Studio Code 环境,它正在编译和运行一个 Go 项目就好了。
现在我正在尝试按照此链接运行 delve 调试器:
https://github.com/Microsoft/vscode-go/wiki/Debugging-Go-code-using-VS-Code
但我无法让它运行,无论是远程还是本地。
在 launch.json 中尝试了所有类型的配置,但没有命中断点,也没有打印错误消息。
有没有人使用 WSL 在 VSCode 上调试运行?
我已经建立了我的二进制,: go build -gcflags "$gc_flags" -o ./bin/grafana-server ./pkg/cmd/grafana-server,其中$gc_flags是'-N -l'。
当我./bin/grafana-server在调试器 (Goland) 中运行此文件并附加到它时,并未加载所有符号。此外,一些断点会显示以下消息:
/Users/.../file.go:186 没有代码
我想调试的代码如下:
我添加到原始项目的部分是 lines 186-199。您可以看到执行已进入for _, ..循环(第 196 行),表明query有数据,并且我们能够使用它从数据库中query通过repo.Find(query). 但是,query在我的调试器中找不到:
所以我不确定此时发生了什么。不幸的是,我对 golang 真的很陌生;这让我很难取得任何进展。