在 Understanding Real-World Concurrency Bugs in Go 这篇论文里,作者系统地分析了6个流行的Go项目(Docker、Kubernetes、gRPC-go、etcd、CockroachDB、 BoltD)和其中171个并发bug,通过这些分析我们可以加深对Go的并发模型的理解,从而产出更好、更可靠的代码。
退而求其次,我为尝试给Pony加了ETW(Event Tracing for Windows)支持(分支etw-tracelogging)。ETW其实更像是高性能的日志而不是动态跟踪,虽然也能拿到堆栈,但是性能、灵活性、安全性都差DTrace很多。实现方法也比较简单,就是把原来DTrace宏换成TraceLogging API调用。