外部程序可以知道go程序中goroutine的数量吗?

时间:2018-08-31 01:40:56

标签: go goroutine

我可以通过它获得价值 "runtime.NumGoroutine()" ..

我可以知道外部程序中的goroutine数量吗?

1 个答案:

答案 0 :(得分:3)

也许您可以使用delve

  1. go get github.com/derekparker/delve/cmd/dlv
  2. 运行您的主应用程序
  3. 找到您的主要申请书中的$pid
  4. dlv attach $pid,然后键入goroutines以查看所有go例程,如下所示:
C:\work\gowork>dlv attach 5696
Type 'help' for list of commands.
(dlv) goroutines
[5 goroutines]
  Goroutine 1 - User: C:/devsoft/Go/src/runtime/time.go:102 time.Sleep (0x440c3b)
  Goroutine 2 - User: C:/devsoft/Go/src/runtime/proc.go:292 runtime.gopark (0x42a03f)
  Goroutine 3 - User: C:/devsoft/Go/src/runtime/proc.go:292 runtime.gopark (0x42a03f)
  Goroutine 17 - User: C:/devsoft/Go/src/runtime/proc.go:292 runtime.gopark (0x42a03f)
* Goroutine 19 - User: :0 ??? (0x7fffef855427) (thread 15260)
(dlv)

然后,您的程序需要执行的操作是使用dlv之类的命令来控制命令expect,以控制调试工具输入goroutines的命令。

似乎它有一个类似于xml-rpc的api以便客户端获取更多信息,您可以看看,我以前没有使用过api。

仅供参考,