几年前写过个工具 gospy, 用于从旁路 dump 一个 golang 进程的 runtime 信息(包括 goroutine, memory 等), 大致原理见以前的文章.
基本功能能用, 但没继续做下去, 除了没时间外, 其他还有几个问题:
- 不支持 MacOS (主要是没搞懂 MacOS 下怎么读取进程内存).
- DWARF 解析写的过于繁琐, golang 版本更新时, 解析逻辑很难调整.
- 对写 UI (包括 terminal UI 和前端) 实在没兴趣, 不写又没法暴露功能, 也懒得去做通过 http 接口暴露数据.
前阵子试了下通过 aider 来写代码, 效果非常惊艳, 对我来说, 比 curosr 还顺手. 于是花了两个周末的时间, 把 gospy 整个重写了.
......