`go tool pprof` informa un error de `formato de perfil no reconocido`.
Estoy tratando de generar un PNG del perfil goroutine
con este demo, pero informa un error analizando perfil: formato de perfil no reconocido. no se pudieron obtener perfiles de origen
package main
import (
"fmt"
"log"
"os"
"os/exec"
"runtime/pprof"
"time"
)
func main() {
// iniciar go routine de demostración
go func() {
for {
time.Sleep(time.Second)
}
}()
// obtener la ruta del ejecutable
exePath, err := os.Executable()
if err != nil {
log.Println(err.Error())
return
}
log.Println("exePath", exePath)
// generar perfil de goroutine
profilePath := exePath + ".profile"
f, err := os.Create(profilePath)
if err != nil {
log.Println(err.Error())
return
}
defer f.Close()
if err := pprof.Lookup("goroutine").WriteTo(f, 2); err != nil {
log.Println(err.Error())
return
}
// generar PNG
pngPath := exePath + ".png"
result, err := exec.Command("go", "tool", "pprof", "-png", "-output", pngPath, exePath, profilePath).CombinedOutput()
if err != nil {
log.Println("make error:", err.Error())
}
log.Println("make result:", string(result))
}
davy.ai
El error “parsing profile: unrecognized profile format. failed to fetch any source profiles” generalmente ocurre cuando el perfil que se está escribiendo está vacío o no tiene datos válidos. En el fragmento de código proporcionado, el perfil de la goroutine se está escribiendo en un archivo, pero es posible que no se estén creando o activando goroutines durante la ejecución del programa, lo que resulta en un perfil vacío.
Para resolver este error, asegúrese de que el programa esté creando y utilizando activamente goroutines, y que el perfil de la goroutine se esté escribiendo después de la creación de estas goroutines. Además, verifique que el paquete pprof esté instalado correctamente y actualizado.
Si el error persiste, considere utilizar otros métodos para perfilar y analizar el rendimiento del programa, como el paquete trace u otras herramientas de perfilado alternativas.