【发布时间】:2018-09-01 09:47:04
【问题描述】:
类似问题:How to dump goroutine stacktraces?
我接手了一个 go 程序,但它相当复杂,我无法通过读取代码手动跟踪代码流,因为执行了一些方法,我不知道为什么。
有没有办法打印出 main.go 运行后执行的所有方法?
我知道:https://golang.org/pkg/net/http/pprof/ 但我只能看到 goroutines 运行,而不是我无法回溯/逆向工程的具体方法。
【问题讨论】:
-
pprof是一个完整的分析器。它将生成完整的配置文件,包括所有函数调用和每个函数的内存/CPU 使用情况。覆盖得很好on the Go blog。 -
您是否尝试过使用
delve单步执行程序? -
pprof 是一个采样分析器,所以它只记录采样的位置。
-
我会给@Adrian 另一个机会:localhost:6060/debug/pprof/goroutine?debug=2 如果你说执行的所有东西都必须在那里,也许我迷失在一堆带有 0x72、0x0、0x0、0x0 的文本中...有没有办法用一些 -h 标志显示它?调试器对我不起作用,因为它是区块链以太坊的疯狂,也运行一些 C 库左右。
-
@EnchanterIO:是的,pprof(和大多数分析器)不会跟踪每个函数调用的时间,它们会记录每个函数被采样的次数。您需要在一段时间内练习要分析的代码。
标签: go profiling reverse-engineering