"bytes"
"fmt"
"io"
+ "io/ioutil"
"os"
"os/exec"
"runtime"
}
}
+var vizTmpDir string
+
+func makeVizTmpDir() error {
+ if vizTmpDir != "" {
+ return nil
+ }
+ name, err := ioutil.TempDir("", "pprof-")
+ if err != nil {
+ return err
+ }
+ vizTmpDir = name
+ return nil
+}
+
func invokeVisualizer(interactive **bool, format PostProcessor, suffix string, visualizers []string) PostProcessor {
return func(input *bytes.Buffer, output io.Writer, ui plugin.UI) error {
- tempFile, err := tempfile.New(os.Getenv("PPROF_TMPDIR"), "pprof", "."+suffix)
+ if err := makeVizTmpDir(); err != nil {
+ return err
+ }
+ tempFile, err := tempfile.New(vizTmpDir, "pprof", "."+suffix)
if err != nil {
return err
}
" -help This message"
var usageMsgVars = "Environment Variables:\n" +
- " PPROF_TMPDIR Location for temporary files (default $HOME/pprof)\n" +
+ " PPROF_TMPDIR Location for saved profiles (default $HOME/pprof)\n" +
" PPROF_TOOLS Search path for object-level tools\n" +
" PPROF_BINARY_PATH Search path for local binary files\n" +
" default: $HOME/pprof/binaries\n" +