V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
swananan
V2EX  ›  程序员

非 AI 相关的开源项目:断断续续写的一个可以用于生产环境源码级别调试的工具,最近又迭代了一版

  •  2
     
  •   swananan ·
    swananan · 1 天前 · 886 次点击
    https://github.com/swananan/ghostscope

    这个项目有点类似于中年钓鱼的爱好,没想过有经济上的收益,也没有去蹭 AI 风口,纯属自娱自乐。不过之前由于这个项目可能太自嗨了,基本用户只有我一个人,平时工作时候,偶尔拿出来玩一玩。但是在编译器高优化选项下,程序优化的太厉害,追踪能力一直有 bug ,我就一直没有动力继续搞了。

    前一阵子 gimli 库的维护者 philipc ,给我提了一个 pr ,帮我这个项目升级到了 gimli 最新版本,还顺手给我指出一个调试信息( DWARF)处理的 bug ,这让我突然又有动力继续搞起来了,至少有大佬看过我的玩具😂。

    我最近除了优化了下高优化下的调试能力,包括内联函数之类的(后面我可能还会借鉴学习下 perf probe 的实现细节)。更多的是强化了这个工具的命令行模式,我本来主要想法是做成 TUI ,类似于 cgdb 那么使用的(但是 AI 时代下,我已经几个月没有用 cgdb 了,都是让 AI 给我写 GDB 脚本)。

    命令行的好,AI 时代大家都懂。更方便的是,我搞了个 skill ,让 AI 来根据需要被追踪项目的源码来编写 GhostScope 脚本,也不需要用户学习 GhostScope 的脚本语法了。说实话,自研小语言,确实有点自嗨,不尊重用户(谁会去想学那些乌七八糟的小语言)。

    我现在自己平时工作用的还蛮开心的,动不动指挥 Claude code 写个脚本来追踪我开发功能的细节,所以还是继续发帖来交流下。特别是想找点有共同爱好的人,可以一起打磨这个项目。目前这个项目只对 c 语言支持比较好,我后面除了基于 eBPF 的栈回溯之后,还想多支持一些 Rust 的高级语言特性,(话说要是把 async 给拿下,那就有点碉堡了,感觉工作量巨大)。
    第 1 条附言  ·  20 小时 54 分钟前
    后面,我可以加点 show case ,对我而言,很常用的一个场景,就是在应用层里面把很多我关心的缓冲区数据给高效的 dump 出来。比如有自研的加密层( end to end 加密需求场景很常见),又比如有自研的压缩功能,我可以写点脚本很容易把压缩前、加密前的数据拿出来分析,性能比 GDB 强多了。当然不是碰瓷 GDB ,只是 GDB 目的是交互式调试,不适合持续追踪,有性能要求的场景。
    7 条回复    2026-04-10 10:03:46 +08:00
    YanSeven
        1
    YanSeven  
       1 天前
    感觉大佬这个很适合给 Agent 当“武器”用,反正 Agent 不嫌累也不嫌麻烦。
    wwulfric
        2
    wwulfric  
       1 天前
    牛逼啊…… 我在无人关注的角落搞 Python 版本的类似工具 https://github.com/wwulfric/peeka
    w568w
        3
    w568w  
       1 天前
    @wwulfric 朋友这个看着也不错啊。可以作为 py-spy 的平替吗,感觉 py-spy 功能还是太简陋了
    swananan
        4
    swananan  
    OP
       21 小时 9 分钟前
    @YanSeven 是的,我最近换成 AI 来写脚本,搞得我已经快忘记语法了(主要是最近一直也没迭代语法相关的功能

    我现在直接把语法文档塞到 GhostScope 的工具里面,skill 里面可以让 AI 直接从工具里面获取语法文档,来编写脚本,确保语法怎么迭代,AI 都只会写和现有工具版本支持的脚本。
    swananan
        5
    swananan  
    OP
       20 小时 58 分钟前
    @wwulfric 蛮酷的,我学习了下,这个工具底层机制,应该是依赖了 Python 虚拟机官方设计的调试后门,可以拿来做动态追踪。理论上限制比 ebpf + uprobe 要小。当然,uprobe 只是个媒介,ebpf 也可以考虑尝试 bpftime 之类的手段,来提升效率。

    话说回来,我的工具也可以努努力,支持 Python 这种虚拟机语言(得非常努力,并且是若干年后)。但是需要自己去理解 Python 虚拟机实现,去兼容不同版本,去把信息拉出来,终归不如走官方渠道来的标准。

    我现在比较大的心愿,就是看看后面能不能把 Rust 支持好了 = -=。
    wwulfric
        6
    wwulfric  
       19 小时 19 分钟前
    @w568w 嗯是的,初衷也是之前用 py-spy ,觉得不够全面,想要类似 Java 的 Arthas 那样,能临时看一下方法调用的出入参。
    wwulfric
        7
    wwulfric  
       19 小时 18 分钟前   ❤️ 1
    @swananan 大佬加油,ebpf + uprobe 理论上 上限更大
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   820 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 21:22 · PVG 05:22 · LAX 14:22 · JFK 17:22
    ♥ Do have faith in what you're doing.