Ответ
Да, использовал. В Go есть пакет runtime/trace для инструментирования кода. Пример:
package main
import (
"os"
"runtime/trace"
)
func main() {
f, _ := os.Create("trace.out")
defer f.Close()
trace.Start(f)
defer trace.Stop()
// ваш код для трассировки
}
После запуска программы с флагом go run main.go можно анализировать trace.out утилитой go tool trace. Это помогает находить узкие места в производительности, анализировать работу горутин и планировщика.