虽然我发现Go的pprof非常有助于通过观察" semaquire"来报告锁定问题。等等,在我看来它没有帮助报告"谁/什么"拿着锁有问题。
例如,以下pprof输出显示锁定同步时的各种semaquire等待。(* Mutex).Lock(0xbf038c),但没有任何内容表明谁持有该锁以及它的堆栈跟踪是什么。
粘贴pprof输出: https://justpaste.it/10we7
还有其他方法可以从pprof中获取更多预先详细信息吗?我从http调试中访问它,例如
" http://localhost:8080/debug/pprof/goroutine?debug=2"