Golang性能分析工具pprof--远程分析时无法定位源代码行数问题解决方案

场景

通过命令行模式的list命令,为了查看指标消耗在具体哪一行,需要源代码。但实际程序是部署在线上或者程序的源代码目录变了,则pprof从默认路径找不到代码,无法显示是哪一行的问题。

通过浏览器模式的source页面,有时候能知道是哪一行,但没办看到代码

历程

吐槽:百度的答案不多,可能这就是go生态圈现状吧。找到了一个但总是不生效。

解决方案

首先感谢参考地址的作者,源地址:`go tool pprof` - how to specify source when using go modules? - Stack Overflow

主要给出了两个go tool pprof后面添加的参数 -source_path和-trim_path

直接给答案

go tool pprof -source_path=D:\\gop\\youke\\ -trim_path=\\var\\corecdci\\ -inuse_space https://xxx/debug/pprof/heap

分析

-source_path表示源代码的路径:这里要用绝对路径;并且参数值中必须要使用\\,防止\被转义

如果执行命令的位置就是源码所在的路径,可以不指定该参数,我就是在这个路径下

-trim_path表示远程代码路径要截取掉的部分:该参数值中也需要使用\\,防止转义

我的远程路径是这样的:\var\corecdci\app\services\PageModuleMultiService2.go

重点在于截取后的路径前加上source_path指定的路径是本地真正的代码路径,即source_path\截取后剩余的路径,我这里结果就是D:\gop\youke\app\services\PageModuleMultiService2.go,要确保拼接之后是实际存在的文件路径。

Tips:source_path和trim_path如何制定是相对的,只要保证拼接后的文件能找到就可以,比如我可以把source_path设置为D:\\gop\\youke\\app\\,那对应的trim_path就是\\var\\corecdci\\app\\。

最终命令示例:go tool pprof -source_path=源代码所在文件夹路径 -trim_path=远程代码路径要去掉的前缀 -inuse_space https://xxx/debug/pprof/heap

结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值