plugin_pprof.go 751 B

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