介绍
gops
是一个命令行工具,配合agent,可以用来很方便的诊断运行中的go程序,使用简单,官方维护
安装
go get github.com/google/gops
// 或者
go install github.com/google/gops@latest
使用
gops
本身可以查看所有go程序的进程,如果一个程序使用了agent
,gops
可以报告更多的信息,比如stack,内存统计,trace等,使用了agent的程序会用*号标记
使用agent
go func() {
cfg := agent.Options{
Addr: ":2022", //远程调试使用,绑定对应的进程pid
ShutdownCleanup: true,
}
if err := agent.Listen(cfg); err != nil {
panic(err)
}
}()
gops
支持远程诊断,只需要将换成Host:Port即可
列出所有go进程
root@2kpBjdU4m:~# gops
PID PPID Name Version Location
52222 850 docker-proxy go1.13.8 /usr/bin/docker-proxy
162404 162302 gopls go1.17.5 /root/go/bin/gopls
169840 169738 gopls go1.17.5 /root/go/bin/gopls
171257 162544 web * go1.17.5 /home/2kpBjdU4m/hub/gen-server/web
171289 170774 gops go1.17.5 /root/go/bin/gops
850 1 dockerd go1.13.8 /usr/bin/dockerd
查看进程详情
root@2kpBjdU4m:~# gops 171257
par