大家好,欢迎来到IT知识分享网。
服务器是linux
安装delve
go get -u github.com/go-delve/delve/cmd/dlv -v -insecure
或
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
上面的都不行了,我用以下命令成功了
git clone https://github.com/go-delve/delve.git $GOPATH/src/github.com/go-delve/delve
cd $GOPATH
go install github.com/go-delve/delve/cmd/dlv
参考
https://github.com/go-delve/delve/blob/master/Documentation/installation/linux/install.md
可以用 $GOPATH/bin/dlv
执行 也可以先将dlv放入PATH中
ln -s $GOPATH/bin/dlv /usr/local/bin/dlv
之后可以直接用 dlv
例如 dlv version
服务端启动go程序
示例工程
示例源代码
$GOPATH/src/mytest/main.go
package main
import (
"fmt"
"time"
)
const myDate = "2019-05-30 15:13"
var (
Aa = 81
Bb = 82
)
func main() {
fmt.Println("myDate:", myDate)
func1()
}
func func1() {
a := 61
b := 62
i := 0
for true {
fmt.Println("fmt:", i, a, b, Aa, Bb)
i++
a += 2
Aa += 3
time.Sleep(time.Second)
}
}
编译go程序
go install mytest
运行go程序
nohup bin/mytest >> out.log &
显示
[1] 7148
[root@localhost go]# nohup: ignoring input and redirecting stderr to stdout
数字 7148 就是 pid
此时可以ctrl+c退出, 继续后面的操作
ctrl+c后如果出现了 [1]+ Exit
代码,说明go程序终止了, 可能是go代码错误
dlv attach go程序
dlv attach 7148 --headless --listen=:2345 --api-version=2 --accept-multiclient
GoLand配置
Main menu->Run->Edit Configurations…
- -> Go Remote
Host改成服务器ip
Port: 2345
保存 后 Debug go remote
此时可以设置断点, 在 Variables 面板可以查看变量, 可以点击**+增加Watch**
终止dlv和go程序
dlv不终止, 则 go程序也无法终止
而dlv只能通过终止进程的方式终止掉
kill -9 `ps -ef | grep "dlv|mytest" -E | awk '{print $2}'`
TODO
GoLand Console无法显示fmt.println的信息, 只能继续在shell中查看bin/mytest输出
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/22966.html