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

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

  •  
  •   cs5117155 · 2021-09-20 18:42:56 +08:00 · 3090 次点击
    这是一个创建于 1158 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

    “人不能两次踏进同一条河流”
    思科:宇宙射线触发了路由器 BUG
    https://news.mydrivers.com/1/501/501000.htm
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3057 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:37 · PVG 08:37 · LAX 16:37 · JFK 19:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.