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

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

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

    有时候我需要把现在的 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     Solana     1677 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 16:14 PVG 00:14 LAX 09:14 JFK 12:14
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86