plugin_pprof.go 683 B

12345678910111213141516171819202122232425262728
  1. package plugins
  2. import (
  3. "net/http"
  4. "net/http/pprof"
  5. "github.com/v2fly/v2ray-core/v5/main/commands/base"
  6. )
  7. var pprofPlugin Plugin = func(cmd *base.Command) func() error {
  8. addr := cmd.Flag.String("pprof", "", "")
  9. return func() error {
  10. if *addr != "" {
  11. h := http.NewServeMux()
  12. h.HandleFunc("/debug/pprof/", pprof.Index)
  13. h.HandleFunc("/debug/pprof/cmdline", pprof.Cmdline)
  14. h.HandleFunc("/debug/pprof/profile", pprof.Profile)
  15. h.HandleFunc("/debug/pprof/symbol", pprof.Symbol)
  16. h.HandleFunc("/debug/pprof/trace", pprof.Trace)
  17. return (&http.Server{Addr: *addr, Handler: h}).ListenAndServe()
  18. }
  19. return nil
  20. }
  21. }
  22. func init() {
  23. RegisterPlugin(pprofPlugin)
  24. }