简介
关键词
- 保留某一次的运行错误
- 对错误可以反复执行
- 可以反向执行(这个猛)
- 操作和gdb没啥区别
rr aspires to be your primary C/C++ debugging tool for Linux, replacing — well, enhancing — gdb. You record a failure once, then debug the recording, deterministically, as many times as you want. The same execution is replayed every time.
rr also provides efficient reverse execution under gdb. Set breakpoints and data watchpoints and quickly reverse-execute to where they were hit.
rr works on real applications and is used by many developers to fix real bugs. It makes debugging hard bugs much easier, but also speeds up debugging of easy bugs.
rr 渴望成为 Linux 的主要 C/C++ 调试工具,取代——嗯,增强——gdb。您记录一次失败,然后确定性地根据需要多次调试记录。每次都重播相同的执行。
rr 还提供了 gdb 下的高效反向执行。设置断点和数据观察点并快速反向执行到它们被击中的地方。
rr 适用于实际应用程序,许多开发人员使用它来修复实际错误。它使调试困难的错误变得更加容易,但也加快了对简单错误的调试。
翻译自官网
安装
不同系统有不同安装方式,参见:
编译源文件方法
Fedora:
cd /tmp
wget https://github.com/rr-debugger/rr/releases/download/5.5.0/rr-5.5.0-Linux-$(uname -m).rpm
sudo dnf install rr-5.5.0-Linux-$(uname -m).rpm
ubuntu
cd /tmp
wget https://github.com/rr-debugger/rr/releases/download/5.5.0/rr-5.5.0-Linux-$(uname -m).deb
sudo dpkg -i rr-5.5.0-Linux-$(uname -m).deb
arch
yay 搜索一下安装即可,这个最简单。
使用
开始
对于某个程序,只需要输入
rr record /your/application --args
对于rosrun
这种运行方式,可以通过
rosrun --prefix 'rr record' your/node
来进行。
回放刚才的运行过程
rr replay
进入回放。replay后的调试操作和debug一样。
反向debug
设置断点后,运行到断点后的某处,使用rc
,即reverse continue,即可反向运行到之前的断点处。
‘rn’ 即reverse next, 即可逆向gdb的next
进行反向回退。
记录观察点
watch -l 变量
可以实时观察这一变量是否发生变化,有变化立刻停止,十分便于观察各种隐含错误。