使用 rr 进行debug

7 篇文章 1 订阅

简介

关键词

  • 保留某一次的运行错误
  • 对错误可以反复执行
  • 可以反向执行(这个猛)
  • 操作和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 适用于实际应用程序,许多开发人员使用它来修复实际错误。它使调试困难的错误变得更加容易,但也加快了对简单错误的调试。

翻译自官网

安装

不同系统有不同安装方式,参见:

编译源文件方法

github指南

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 变量
可以实时观察这一变量是否发生变化,有变化立刻停止,十分便于观察各种隐含错误。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值