如何在go程序中列出所有正在运行的goroutine?

如何在go程序中列出所有正在运行的goroutine?,go,Go,官方工具或第三方工具中是否有工具可以让您列出与主程序一起运行的所有运行goroutine 或者类似于Erlang/Elixir中的observer?来获取所有goroutine的堆栈跟踪: 您可以将all设置为true: func堆栈(buf[]字节,全部bool)int 堆栈将调用goroutine的堆栈跟踪格式化为buf,并返回写入buf的字节数。如果all为true,则堆栈将所有其他goroutine的跟踪堆叠到当前goroutine跟踪之后的buf中 以什么方式列出它们?他们没有名字或

官方工具或第三方工具中是否有工具可以让您列出与主程序一起运行的所有运行goroutine

或者类似于Erlang/Elixir中的observer?

来获取所有goroutine的堆栈跟踪:

您可以将
all
设置为
true

func堆栈(buf[]字节,全部bool)int
堆栈将调用goroutine的堆栈跟踪格式化为buf,并返回写入buf的字节数。如果all为true,则堆栈将所有其他goroutine的跟踪堆叠到当前goroutine跟踪之后的buf中


以什么方式列出它们?他们没有名字或身份证。您可以从中获得它们的计数。最接近“列出所有goroutine”的方法是转储它们的所有堆栈跟踪,如中所示,但这似乎不是您要查找的。将它们像
goroutine 1
goroutine 2…
goroutine 3…
…列出,您需要自己跟踪;就我所知,Go不会跟踪每个goroutine启动时的时间戳,它对这些信息没有任何用处。@Adrian:严格来说,goroutine确实有ID,但是。如果这是OP想要的答案,那么这个问题就是Agreed的重复!我仍然会保留它,因为它最接近OP想要的!