使用 profiler 标签
Goroutines are functions or methods that run concurrently with other functions or methods. 要创建 goroutine,请使用 go 关键字,后跟函数调用(例如, go func(p string, rid int64))。 但使用大量 goroutine 会使程序更难调试。 为区分不同的 goroutine,您可以使用自定义数据为其加标签。
自 Go 1.9 起,您可以记录附加信息,以提供更丰富的执行路径上下文。 您可以将任意一组标签作为分析数据的一部分进行记录,并在之后使用这些标签来检查 profiler 的输出。
例如,您有一个队列处理器,用于处理在某处创建的事件。 处理器可以设置标签来标识这些事件的创建位置。
在调试和 core dump 分析过程中,上下文信息可能会很有帮助。 例如,您可以使用这些信息更轻松地找到特定的 goroutine。
添加标签
runtime/pprof 包提供了几个用于添加标签的新函数。 最常用的是 Do 函数。 Do 函数接收 context,向该 context 添加标签,并将新 context 传递给 f 函数。
Do 函数仅为当前 goroutine 写入标签。 如需在 f 函数中创建新的 goroutine,您可以将 context 作为参数传递。
在 GoLand 中查看标签
为演示目的,从 GitHub 复制以下代码示例。
在调用 println("ok") 处设置断点。 要设置断点,请单击第 21 行的标记栏。 为 main 函数运行调试。 要开始调试,请单击 运行 图标( ),该图标位于
main 函数旁的标记栏中,并选择 调试 <run_debug_configuration_name>。 在 Goroutines 列表中查看可用的 goroutine。

按下 Ctrl+F2 以停止调试。 删除对 f(ctx) 的调用并取消注释 Do 函数。 按下 ⌃ ⇧ D 以重新运行调试过程。 查看 Goroutines 列表。 Goroutine 名称包含以下信息: /api/profile,userId: <some number>。 您可以使用这些信息在调试或 core dump 分析期间找到特定的 goroutine。

相关链接
调试期间如何查找 goroutine :阅读有关如何在 GoLand 中使用 profiler 标签的教程。
rakyll.org 上的 Go 中 profiler 标签 :了解更多关于 profiler 标签的内容。