aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/pprof
AgeCommit message (Collapse)Author
2016-11-02internal/pprof/profile: new package, moved from cmd/internal/pprof/profileRuss Cox
This allows both the runtime and the cmd/pprof code to use the package, just like we do for internal/trace. Change-Id: I7606977284e1def36c9647354c58e7c1e93dba6b Reviewed-on: https://go-review.googlesource.com/32452 Run-TryBot: Russ Cox <rsc@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-08-24cmd/objdump: implement objdump of .o filesKeith Randall
Update goobj reader so it can provide all the information necessary to disassemble .o (and .a) files. Grab architecture of .o files from header. .o files have relocations in them. This CL also contains a simple mechanism to disassemble relocations and add relocation info as an extra column in the output. Fixes #13862 Change-Id: I608fd253ff1522ea47f18be650b38d528dae9054 Reviewed-on: https://go-review.googlesource.com/24818 Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-06-25cmd/pprof: don't use local symbolization for remote sourceIan Lance Taylor
If we are using a remote source (a URL), and the user did not specify the executable file to use, then don't try to use a local source. This was misbehaving because the local symbolizer will not fail if there is any memory map available, but the presence of a memory map does not ensure that the files and symbols are actually available. We still need a pprof testsuite. Fixes #16159. Change-Id: I0250082a4d5181c7babc7eeec6bc95b2f3bcaec9 Reviewed-on: https://go-review.googlesource.com/24464 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-06-24cmd/pprof: ignore symbols with address 0 and size 0Ian Lance Taylor
Handling a symbol with address 0 and size 0, such as an ELF STT_FILE symbols, was causing us to disassemble the entire program. We started adding STT_FILE symbols to help fix issue #13247. Fixes #16154. Change-Id: I174b9614e66ddc3d65801f7c1af7650f291ac2af Reviewed-on: https://go-review.googlesource.com/24460 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2016-06-21cmd/pprof: don't use offset if we don't have a start addressIan Lance Taylor
The test is in the runtime package because there are other tests of pprof there. At some point we should probably move them all into a pprof testsuite. Fixes #16128. Change-Id: Ieefa40c61cf3edde11fe0cf04da1debfd8b3d7c0 Reviewed-on: https://go-review.googlesource.com/24274 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Andrew Gerrand <adg@golang.org>
2016-05-31runtime/pprof, cmd/pprof: fix profiling for PIEIan Lance Taylor
In order to support pprof for position independent executables, pprof needs to adjust the PC addresses stored in the profile by the address at which the program is loaded. The legacy profiling support which we use already supports recording the GNU/Linux /proc/self/maps data immediately after the CPU samples, so do that. Also change the pprof symbolizer to use the information, if available, when looking up addresses in the Go pcline data. Fixes #15714. Change-Id: I4bf679210ef7c51d85cf873c968ce82db8898e3e Reviewed-on: https://go-review.googlesource.com/23525 Reviewed-by: Michael Hudson-Doyle <michael.hudson@canonical.com>
2016-04-12cmd/pprof/internal: move to cmd/internal/pprofDmitry Vyukov
Make internal pprof packages available to cmd/trace. cmd/trace needs access to them to generate symbolized svg profiles (create and serialize Profile struct). And potentially generate svg programmatically instead of invoking go tool pprof. Change-Id: Iafd0c87ffdd4ddc081093be0b39761f19507907a Reviewed-on: https://go-review.googlesource.com/21870 Run-TryBot: Dmitry Vyukov <dvyukov@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-03-31cmd/pprof: use DWARF info to lookup unknown PC addressesIan Lance Taylor
Test to follow in a separate CL that arranges for the runtime package to store non-Go addresses in a CPU profile. Change-Id: I33ce1d66b77340b1e62b54505fc9b1abcec108a9 Reviewed-on: https://go-review.googlesource.com/21055 Reviewed-by: Austin Clements <austin@google.com> Run-TryBot: Ian Lance Taylor <iant@golang.org>
2016-03-28cmd/pprof/internal: use and accept packed encoding for repeated fieldsRaul Silvera
Packed encoding is the default on the proto3 format. Profiles generated in the profile.proto format by third parties cannot be decoded by the Go pprof tool, since its proto decoder does not recognize packed encoding for repeated fields. In particular this issue prevents go tool pprof from reading profiles generated by the version of pprof in github.com/google/pprof Profiles generated by go tool pprof after this change will use packed repeating fields, so older versions of pprof will not be able to read them. pprof will continue to be able to read profiles generated before this change. Change-Id: Ife0b353a535ae1e495515b9bcec588dd967e171b Reviewed-on: https://go-review.googlesource.com/21240 Reviewed-by: David Symonds <dsymonds@golang.org> Run-TryBot: David Symonds <dsymonds@golang.org>
2016-03-25all: delete dead non-test codeDominik Honnef
This change removes a lot of dead code. Some of the code has never been used, not even when it was first commited. The rest shouldn't have survived refactors. This change doesn't remove unused routines helpful for debugging, nor does it remove code that's used in commented out blocks of code that are only unused temporarily. Furthermore, unused constants weren't removed when they were part of a set of constants from specifications. One noteworthy omission from this CL are about 1000 lines of unused code in cmd/fix, 700 lines of which are the typechecker, which hasn't been used ever since the pre-Go 1 fixes have been removed. I wasn't sure if this code should stick around for future uses of cmd/fix or be culled as well. Change-Id: Ib714bc7e487edc11ad23ba1c3222d1fd02e4a549 Reviewed-on: https://go-review.googlesource.com/20926 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-03-13cmd/pprof: fix crash with invalid sourceEgon Elbre
pprof crashed when running with: go tool pprof %INVALID Change-Id: I47c2a4da7273e3a97a833f320a650b8c6b59d6b9 Reviewed-on: https://go-review.googlesource.com/20632 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-03-02all: single space after period.Brad Fitzpatrick
The tree's pretty inconsistent about single space vs double space after a period in documentation. Make it consistently a single space, per earlier decisions. This means contributors won't be confused by misleading precedence. This CL doesn't use go/doc to parse. It only addresses // comments. It was generated with: $ perl -i -npe 's,^(\s*// .+[a-z]\.) +([A-Z]),$1 $2,' $(git grep -l -E '^\s*//(.+\.) +([A-Z])') $ go test go/doc -update Change-Id: Iccdb99c37c797ef1f804a94b22ba5ee4b500c4f7 Reviewed-on: https://go-review.googlesource.com/20022 Reviewed-by: Rob Pike <r@golang.org> Reviewed-by: Dave Day <djd@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-03-01all: make copyright headers consistent with one space after periodBrad Fitzpatrick
This is a subset of https://golang.org/cl/20022 with only the copyright header lines, so the next CL will be smaller and more reviewable. Go policy has been single space after periods in comments for some time. The copyright header template at: https://golang.org/doc/contribute.html#copyright also uses a single space. Make them all consistent. Change-Id: Icc26c6b8495c3820da6b171ca96a74701b4a01b0 Reviewed-on: https://go-review.googlesource.com/20111 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-02-24all: fix typos and spellingMartin Möhrmann
Change-Id: Icd06d99c42b8299fd931c7da821e1f418684d913 Reviewed-on: https://go-review.googlesource.com/19829 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2015-12-17cmd/pprof: fix scaling of "gigabyte" unitBrad Fitzpatrick
Fixes #13654 Change-Id: Id2ce32c52efcfdbd66630725d62d2ca6bf0916d5 Reviewed-on: https://go-review.googlesource.com/17934 Reviewed-by: Russ Cox <rsc@golang.org>
2015-12-05cmd/pprof: exit with non-zero status code on errorMohit Agarwal
Set the status code in case of error. Fixes #11510 Change-Id: If461c30a1f6d2275539f33a2eabd7b19bbfa411d Reviewed-on: https://go-review.googlesource.com/16718 Reviewed-by: Russ Cox <rsc@golang.org>
2015-12-05cmd/pprof/internal: map/slice literals janitoringDidier Spezia
Simplify slice/map literal expression. Caught with gofmt -d -s, fixed with gofmt -w -s Change-Id: I19723900d0649019bf79b9330d68525a68ed69c4 Reviewed-on: https://go-review.googlesource.com/13835 Reviewed-by: Russ Cox <rsc@golang.org>
2015-07-23cmd/pprof: fix race between viewer and web commandRuss Cox
Fixes #11729. Change-Id: I6e5e23169ac1368afcbd016ed544a710aa045326 Reviewed-on: https://go-review.googlesource.com/12553 Reviewed-by: Rob Pike <r@golang.org>
2015-07-15cmd/pprof: store temporary files in temporary directoryRuss Cox
Fixes #9180. Change-Id: Id5adaea0ca9005946fb89c88a10c6f59d8c0943c Reviewed-on: https://go-review.googlesource.com/12202 Reviewed-by: Andrew Gerrand <adg@golang.org>
2015-07-15cmd/pprof: run $BROWSER and system browser before ChromeRuss Cox
Fixes #10259. Change-Id: Ica6b8301cc8291785a3c496fb513050813b2d8df Reviewed-on: https://go-review.googlesource.com/12201 Reviewed-by: Andrew Gerrand <adg@golang.org>
2015-07-12all: link to https for golang subdomains tooBrad Fitzpatrick
The previous commit (git 2ae77376) just did golang.org. This one includes golang.org subdomains like blog, play, and build. Change-Id: I4469f7b307ae2a12ea89323422044e604c5133ae Reviewed-on: https://go-review.googlesource.com/12071 Reviewed-by: Rob Pike <r@golang.org>
2015-06-11all: fix misprints in commentsAinar Garipov
These were found by grepping the comments from the go code and feeding the output to aspell. Change-Id: Id734d6c8d1938ec3c36bd94a4dbbad577e3ad395 Reviewed-on: https://go-review.googlesource.com/10941 Reviewed-by: Aamir Khan <syst3m.w0rm@gmail.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2015-06-05cmd/pprof: use copy of svgpan library instead of link to remote siteRuss Cox
Fixes #10375. Change-Id: I78dc3e12035d130c405bdb284b0cceea19f084f6 Reviewed-on: https://go-review.googlesource.com/10690 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2015-06-02cmd/pprof/internal/profile: fix missing error checkDave Cheney
Fix missing error check. Spotted by Gordon Klass, https://groups.google.com/forum/#!topic/golang-nuts/MdDLbvOjb4o Change-Id: I453a0cf032e0077d2622d5b85030310d159b9c4b Reviewed-on: https://go-review.googlesource.com/10606 Reviewed-by: Nigel Tao <nigeltao@golang.org>
2015-05-18cmd/pprof/internal/profile: ignore comments when parsing heap profilesDaniel Morsing
Fixes #10659. Change-Id: I22dc306ce6f398dd40010ac430928a718d67d466 Reviewed-on: https://go-review.googlesource.com/9623 Reviewed-by: Russ Cox <rsc@golang.org>
2015-04-26cmd/pprof: handle empty profile gracefullyHåvard Haugen
The command "go tool pprof -top $GOROOT/bin/go /dev/null" now logs that profile is empty instead of panicking. Fixes #9207 Change-Id: I3d55c179277cb19ad52c8f24f1aca85db53ee08d Reviewed-on: https://go-review.googlesource.com/2571 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2015-03-16cmd/pprof/internal/profile: insert blank line after non-doc commentRuss Cox
Change-Id: I91fe72c60d6c41644780474620e05380e9af2a3d Reviewed-on: https://go-review.googlesource.com/7620 Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com> Reviewed-by: Rob Pike <r@golang.org>
2015-02-19cmd/pprof: add -runtime flagDmitry Vyukov
The flag disables stripping of runtime frames in profiles. This is useful when analyzing runtime itself. Before: $ go tool pprof --text --alloc_objects --lines fmt.test /tmp/mprof flat flat% sum% cum cum% 2768 79.65% 79.65% 32768 79.65% fmt_test.TestComplexFormatting fmt/fmt_test.go:744 6554 15.93% 95.58% 6554 15.93% regexp/syntax.(*compiler).rune regexp/syntax/compile.go:267 1820 4.42% 100% 1820 4.42% runtime.malg runtime/proc1.go:1977 After: $ go tool pprof --text --alloc_objects --lines --runtime fmt.test /tmp/mprof flat flat% sum% cum cum% 32768 79.65% 79.65% 32768 79.65% runtime.convT2E runtime/iface.go:139 6554 15.93% 95.58% 6554 15.93% runtime.growslice runtime/slice.go:89 1820 4.42% 100% 1820 4.42% runtime.malg runtime/proc1.go:1977 Change-Id: If468dfa5c5bbd0809c45a58d912d3115fac009ed Reviewed-on: https://go-review.googlesource.com/5291 Reviewed-by: Russ Cox <rsc@golang.org> Reviewed-by: Rick Hudson <rlh@golang.org>
2015-02-10cmd/pprof/internal/report: fix typo in recognized output unitIan Lance Taylor
Fixes #9814. Change-Id: I1be49efae0648038f590eeca1262037bf1af3df5 Reviewed-on: https://go-review.googlesource.com/4240 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
2014-12-11cmd/pprof: remove -show_bytes from command line helpAustin Clements
This flag no longer exists. It has been replaced with -unit=byte. Change-Id: Iff9fc501f2c666067c9b1948c4623c8e3adddb8d Reviewed-on: https://go-review.googlesource.com/1287 Reviewed-by: Russ Cox <rsc@golang.org>
2014-12-04cmd/pprof/internal/commands: add command to open browser on windowsShenghou Ma
While we're at there, also add a message to prompt the user to install Graphviz if "dot" command is not found. Fixes #9178. LGTM=adg, alex.brainman, cookieo9, rsc R=rsc, adg, bradfitz, alex.brainman, cookieo9, smyrman CC=golang-codereviews https://golang.org/cl/180380043
2014-12-03cmd/pprof: fix symbol resolution for remote profilesRuss Cox
Fixes #9199. LGTM=iant R=golang-codereviews, iant CC=austin, golang-codereviews, minux https://golang.org/cl/183080043
2014-11-17cmd/pprof: fix EOF handling when getting function sourceAustin Clements
getFunctionSource gathers five lines of "margin" around every requested sample line. However, if this margin went past the end of the source file, getFunctionSource would encounter an io.EOF error and abort with this error, resulting in listings like (pprof) list main.main ROUTINE ======================== main.main in ... 0 8.33s (flat, cum) 99.17% of Total Error: EOF (pprof) Modify the error handling in getFunctionSource so io.EOF is always considered non-fatal. If it reaches EOF, it simply returns the lines it has. LGTM=bradfitz R=rsc, bradfitz CC=golang-codereviews https://golang.org/cl/172600043
2014-11-09cmd/pprof: install as go tool pprofRuss Cox
LGTM=bradfitz, r R=r, bradfitz CC=golang-codereviews https://golang.org/cl/168320043
2014-11-06cmd/objdump, cmd/pprof: factor disassembly into cmd/internal/objfileRuss Cox
Moving so that new Go 1.4 pprof can use it. The old 'GNU objdump workalike' mode for 'go tool objdump' is now gone, as are the tests for that mode. It was used only by pre-Go 1.4 pprof. You can still specify an address range on the command line; you just get the same output format as you do when dumping the entire binary (without an address limitation). LGTM=r R=r CC=golang-codereviews, iant https://golang.org/cl/167320043
2014-09-30cmd/pprof: add Go implementationRuss Cox
Update #8798 This is a new implementation of pprof, written in Go instead of in Perl. It was written primarily by Raul Silvera and is in use for profiling programs of all languages inside Google. The internal structure is a bit package-heavy, but it matches the copy used inside Google, and since it is in an internal directory, we can make changes to it later if we need to. The only "new" file here is src/cmd/pprof/pprof.go, which stitches together the Google pprof and the Go command libraries for object file access. I am explicitly NOT interested in style or review comments on the rest of the files (that is, src/cmd/pprof/internal/...). Those are intended to stay as close to the Google copies as possible, like we did with the pprof Perl script. Still to do: - Basic tests. - Real command documentation. - Hook up disassemblers. LGTM=r R=r, bradfitz, alex.brainman, dave CC=golang-codereviews https://golang.org/cl/153750043