为了账号安全,请及时绑定邮箱和手机立即绑定

如何调试用golang编写的死锁进程

如何调试用golang编写的死锁进程

Go
互换的青春 2021-09-13 20:13:35
我有一个用 golang 编写的进程,它作为守护进程运行。几天后,它在没有明显原因的情况下停止生产。我认为这可能是内部僵局。如果我做一个strace -p <PID>我可以看到这条线futex(0x9aaba0, FUTEX_WAIT, 0, NULL显然这个电话永远不会结束。我想使用已经运行的进程(因为我不知道如何/何时再次触发错误)来调试问题。如何查看正在运行的 goroutine 以及它们的位置?我如何从进程中转储可能对调试问题有用的任何其他信息?
查看完整描述

1 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

你可以向任何 go 程序发送一个QUIT信号,它会以完整的堆栈跟踪退出,显示所有 goroutine 的状态,以及它们是如何被阻塞的。

至于strace,go 程序总是多线程的,所以你总是需要添加-f选项


查看完整回答
反对 回复 2021-09-13
  • 1 回答
  • 0 关注
  • 193 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信