Пользовался ли трассировкой

«Пользовался ли трассировкой» — вопрос из категории DevOps, который задают на 24% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, использовал. В 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. Это помогает находить узкие места в производительности, анализировать работу горутин и планировщика.