2016-12-16 21 views
0

Edit: работал, когда я добавил исполняемый на вызов pprofпрофилировщика не показывает вызовы функций (/ ПГК/профиль с pprof)

Я пытаюсь профилировать простую программу с профилировщика из https://github.com/pkg/profile: и идти инструмент pprof.

package main 

import "github.com/pkg/profile" 

func main() { 
    defer profile.Start().Stop() 
    t1() 
    t2() 
} 

func t1() { 
    for i := 0; i < 9000000000; i++ { 
     x := i * 2 
     x += x 
    } 
} 

func t2() { 
    for i := 0; i < 1000000000; i++ { 
     x := i * 2 
     x += x 
    } 
} 

Пример показывает хороший стол со всеми функциями, которые были призваны и сколько времени было потрачены в каждом из них, но я только видел использование 100% в течение нескольких секунд при отсутствии дополнительной информации

Что я могу сделать, чтобы он выдавал функции? имеет ли он какое-либо отношение к строке «cpu profiling disabled», которая выводится при выполнении кода?

это то, что я использовал для создания выходного сигнала:

./test 
2016/12/16 11:04:39 profile: cpu profiling enabled, /tmp/profile176930291/cpu.pprof 
2016/12/16 11:04:44 profile: cpu profiling disabled, /tmp/profile176930291/cpu.pprof 
[email protected]:~/work/bin$ go tool pprof -text /tmp/profile176930291/cpu.pprof 
4.90s of 4.90s total ( 100%)                                                      
     flat flat% sum%  cum cum% 
    4.90s 100% 100%  4.90s 100% 
+0

Вы должны вызвать pprof с двоичной в качестве первого аргумента – JimB

ответ

0

Вы получаете сообщение об ошибке, как:

Local символизация Сбой ТМП: открыть/TMP/гоу-build594370835/command- line-arguments/_obj/exe/tmp: нет такого файла или каталога

Если это так; в каталоге источника, попробуйте:

go build tmp.go 

Повторный запуск go tool pprof -text ... затем приводит:

go tool pprof -text /tmp/profile668503934/cpu.pprof 
5040ms of 5040ms total ( 100%) 
     flat flat% sum%  cum cum% 
    4560ms 90.48% 90.48%  4560ms 90.48% main.t1 
    480ms 9.52% 100%  480ms 9.52% main.t2 
     0  0% 100%  5040ms 100% main.main 
     0  0% 100%  5040ms 100% runtime.goexit 
     0  0% 100%  5040ms 100% runtime.main 

Это теперь, используя символы, содержащиеся в ./tmp двоичной системе.

Я использую go version go1.7.3 linux/amd64

+0

я не получаю никаких сообщений об ошибках, выход в этом вопросе все я получаю – Pownyan

+0

Что результат 'идти version'? –

+0

Я запускаю 1.6.2 linux/amd – Pownyan