
之前写了一些 golang 的玩具,有的时候编译产物的体积比想象中更大,想确定是哪个依赖的原因也不太方便。琢磨了一下 elf 的格式,写了一个体积分析工具。顺便实现了类似 webpack bundle analyzer 那种的可视化界面,可以一层层查看不同 namespace 下的包,看起来直观一些。

项目地址: https://github.com/Zxilly/go-size-view
下载: https://github.com/Zxilly/go-size-view/releases/tag/0.1.0
因为依赖了一些 C++ 的东西,交叉编译不太方便,所以现在只编译了 linux 的。可以自己配依赖在其他平台上编译。
只能分析 elf64 格式的文件,PE 和 MachO 的支持要以后做了。
1 Nazz 2023 年 3 月 14 日 via Android 看起来很不错 |
2 xujinkai 2023 年 3 月 14 日 via Android 赞 |
3 FightPig 2023 年 3 月 15 日 这个不错 |
4 ewBuyVmLZMZE 2023 年 3 月 15 日 谢谢,这个很不错,我很好奇,后面会增加二进制压缩功能么? |
5 wuzhewuyou 2023 年 3 月 15 日 via Android upx 压一下 |
6 mogging 2023 年 3 月 15 日 via Android 很实用 |
7 learningman OP @syhily 不太可能,毕竟只是个检测工具。 |
8 proxytoworld 2023 年 3 月 15 日 这检测原理是啥呢,看了一下源码没看懂 |
9 bv 2023 年 3 月 15 日 有意思,问个题外问题:怎么没用 Go 实现 |
10 learningman OP @proxytoworld 分析符号表统计,然后常量靠反编译找相对地址 |
11 learningman OP @bv 没找到 go 好用的二进制分析库,翻了半天 delve 的代码感觉有点不太好搞 |
12 MyLeoWind 2023 年 3 月 15 日 via Android jondot/goweight 这个工具也可以 |
13 learningman OP @MyLeoWind 他这个实现比我的巧妙,感觉可以借过来优化一下 |
14 learningman OP @MyLeoWind 仔细看了一下不太行,他这个没法处理移除了 dead code 的情况,体现出来的体积不一定包括在最后的二进制文件里 |
15 proxytoworld 2023 年 3 月 15 日 @learningman 也就是不能分析 release ? release 的应该移除了符号表把 |
16 learningman OP @proxytoworld 分析不了,必须要有符号表和调试信息 |