大家有没有被那种偶发的bug折磨过。抱抱刚才还崩着,再跑一遍又没事,加了一堆print还是抓不到,像在抓ghost。我前阵子试了rr这个录屏式调试器,感觉挺香。它把整个进程从头录到尾,出事了不用靠运气去重现,直接倒带重放到出问题的那一刻,还能配GDB逐指令往回看。
并发和嵌入式那类竞态最磨人,时序一乱就查不动,rr把执行路径锁成确定性的,等于把玄学bug变成可复现的对照实验,省下不少熬夜时间。最舒服的是它对代码零侵入,开源免费,装上就能用。
当然不是万能,录制本身有一点开销,重型场景得权衡下。会好的但比起print到眼花,这种时间旅行式的调试真的舒服太多,被偶发bug折腾过的朋友值得一试。