使用 profiler 标签
Goroutines 是与其他功能或方法同时运行的功能或方法。 要创建一个 goroutine,使用 go 关键字,后跟函数调用(例如, go func(p string, rid int64))。 但是,使用大量 goroutines 会使程序难以调试。 要区分 goroutines,您可以使用自定义数据为 goroutines 添加标签。
自 Go 1.9 起,您可以记录附加信息,以提供更多关于执行路径的上下文。 您可以将任何标签集记录为分析数据的一部分,并在以后使用这些标签来检查 profiler 输出。
例如,您有一个处理某处创建的事件的队列处理程序。 处理程序可以设置标签,以识别这些事件的创建位置。
在调试和核心转储分析期间,上下文信息可能会有所帮助。 例如,您可以使用此信息更轻松地找到特定的 goroutine。
添加标签
runtime/pprof 包含多个新功能,您可以使用这些功能添加标签。 最受欢迎的是 Do 功能。 Do 函数接收上下文,添加标签到此上下文,并将新上下文传递给 f 函数。
Do 函数仅为当前goroutine写标签。 如果您在 f 函数中创建新的 goroutines,可以将 context 作为参数传递。
在 IntelliJ IDEA 中查看标签
出于说明目的, 从 GitHub 复制以下代码示例。
在调用 println("ok") 的地方设置断点。 要设置断点,请点击第 21 行的标记栏。 为 main 函数运行调试。 要开始调试,请点击 运行 图标 () 在
main 函数附近的边栏,并选择 调试 <run_debug_configuration_name>。 从 Goroutines 列表中,观察可用的goroutines。

请按 Ctrl+F2 停止调试。 删除 f(ctx) 调用并取消注释 Do 函数。 通过按 ⌃ ⇧ D 重新运行调试过程。 请探索 Goroutines 列表。 Goroutine 名称包括以下信息: /api/profile, userId: <some number>。 您可以使用此信息在调试或核心转储分析期间找到特定的 goroutine。

实用链接
如何在调试期间查找 Goroutine :阅读教程,了解如何在 IntelliJ IDEA 中使用 profiler 标签。
rakyll.org 上的 Go Profiler 标签 :阅读更多有关 Profiler 标签的信息。