V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cs5117155
V2EX  ›  程序员

求一个可以把程序流程复现的工具

  •  
  •   cs5117155 · 33 天前 · 1762 次点击
    这是一个创建于 33 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有时候我需要把现在的 bug 复现出来,但是鉴于要通过第三方 api 联动才跑完整个流程,单纯通过日志与 sql 日志进行推断问题所有,会占用很多时间。能否有一个工具,可以把当时的程序流程可以通过像电影这样回放,那么能定位到问题就会非常的快了

    16 条回复    2021-09-23 12:59:47 +08:00
    lizheming
        1
    lizheming   33 天前
    Suinn
        2
    Suinn   33 天前
    还有这种好东西吗,插个眼
    1vonzhang
        3
    1vonzhang   33 天前
    概念:Reverse debugging, 参考 https://undo.io/resources/reverse-debugging-whitepaper/

    工具:
    C/C++: rr https://rr-project.org/
    Python: RevPDB, timetravelpdb
    learningman
        4
    learningman   33 天前 via Android
    要用第三方的话,mock?
    abc11
        5
    abc11   33 天前
    Rx.NET in Action 》讲过一个鼠标画线的案例,可以参考一下
    shyrock
        6
    shyrock   33 天前
    感觉能大幅提升 debug 效率,然而看了一下 py 的几个实现,都是 15 、16 年就停止了。。。

    另外,看了一下这几个实现的能力,还是在于比较容易复现的 bug,通过更少的调试迭代定位到问题。
    但是,lz 的问题,或者说我们更痛苦的问题,是不易复现的 bug,比如在业务环境出现了偶发问题,在调试环境很难复现,这个似乎还是无解。
    akira
        7
    akira   33 天前
    即使不涉及到 3 方, 要复现 “当时的程序流程” 也是个很困难的事情
    ClericPy
        8
    ClericPy   33 天前
    不限语言??? 那只好招个 QA 了...
    LifStge
        9
    LifStge   33 天前
    这种东西吧 我感觉最终还是 log 不过是把 log 更细化 比如自动化的 hook 打点记录 然后就是对记录的结构化 流程化 分组啥的 最终缺少的还是针对性的自动化工具..
    fuse
        10
    fuse   33 天前
    问这个问题, 计算机还没学好
    这个其实就是个信息论问题, 程序执行所有信息, 难道所有信息都能记下来?
    每 s 100w 次系统调用, 每次参数, 返回值都能记下来?
    每次调用, 每个分支都记? 那存储比 cpu 还快

    其实嘛? 只能记重要的部分, 比如 log

    所以只能是 log, 或者加一些函数的 trace
    Feiex
        11
    Feiex   33 天前
    @fuse 他这个是关联数据比较多,制造复现 bug 的场景比较麻烦。有些企业有流量录制和回放工具,支持线上采样线下回放,可以解决他这种问题
    xzysaber
        12
    xzysaber   33 天前
    是指流量复制吗?
    https://github.com/buger/goreplay
    YsHaNg
        13
    YsHaNg   32 天前
    windbg 可以 time travel debug
    fengjianxinghun
        14
    fengjianxinghun   31 天前
    @fuse 能,qemu tcg replay 整个虚拟机指令执行。
    RexG
        15
    RexG   31 天前
    也不说啥语言,前端可以用这个 https://github.com/rrweb-io/rrweb
    sbilly
        16
    sbilly   30 天前
    😂

    “人不能两次踏进同一条河流”
    思科:宇宙射线触发了路由器 BUG
    https://news.mydrivers.com/1/501/501000.htm
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1375 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 00:12 · PVG 08:12 · LAX 17:12 · JFK 20:12
    ♥ Do have faith in what you're doing.