профилировщик не показывает вызовы функций (/pgk/profile с 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% использование в течение нескольких секунд без дополнительной информации.

что я могу сделать, чтобы он выводил функции? это как-то связано со строкой «профилирование процессора отключено», которая выводится, когда код выполнен?

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

./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
martin@martin-laptop:~/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%  

person Pownyan    schedule 16.12.2016    source источник
comment
Вам нужно вызвать pprof с двоичным файлом в качестве первого аргумента.   -  person JimB    schedule 16.12.2016


Ответы (1)


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

Ошибка локальной символизации для tmp: open /tmp/go-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

person Martin Gallagher    schedule 16.12.2016
comment
я не получаю никаких сообщений об ошибках, вывод в вопросе - это все, что я получаю - person Pownyan; 16.12.2016
comment
Каков результат go version? - person Martin Gallagher; 16.12.2016
comment
у меня 1.6.2 линукс/амд - person Pownyan; 16.12.2016
comment
Я также пытался запустить его в 1.7.4 на Windows с теми же результатами, что и в 1.6.2. - person Pownyan; 16.12.2016