mirror of
https://github.com/tailscale/tailscale.git
synced 2024-11-29 21:15:39 +00:00
efb84ca60d
This was already possible on Linux if you ran tailscaled with --debug (which runs net/http/pprof), but it requires the user have the Go toolchain around. Also, it wasn't possible on macOS, as there's no way to run the IPNExtension with a debug server (it doesn't run tailscaled). And on Windows it's super tedious: beyond what users want to do or what we want to explain. Instead, put it in "tailscale debug" so it works and works the same on all platforms. Then we can ask users to run it when we're debugging something and they can email us the output files. Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
31 lines
653 B
Go
31 lines
653 B
Go
// Copyright (c) 2021 Tailscale Inc & AUTHORS All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
//go:build !ios && !android
|
|
// +build !ios,!android
|
|
|
|
// We don't include it on mobile where we're more memory constrained and
|
|
// there's no CLI to get at the results anyway.
|
|
|
|
package localapi
|
|
|
|
import (
|
|
"net/http"
|
|
"net/http/pprof"
|
|
)
|
|
|
|
func init() {
|
|
serveProfileFunc = serveProfile
|
|
}
|
|
|
|
func serveProfile(w http.ResponseWriter, r *http.Request) {
|
|
name := r.FormValue("name")
|
|
switch name {
|
|
case "profile":
|
|
pprof.Profile(w, r)
|
|
default:
|
|
pprof.Handler(name).ServeHTTP(w, r)
|
|
}
|
|
}
|