使用 rr 进行debug

  • 简介
    • 关键词
  • 安装
    • 编译源文件方法
    • Fedora:
    • ubuntu
    • arch
  • 使用
    • 开始
    • 回放刚才的运行过程
    • 反向debug
    • 记录观察点

简介

关键词

  • 保留某一次的运行错误
  • 对错误可以反复执行
  • 可以反向执行(这个猛)
  • 操作和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 变量
可以实时观察这一变量是否发生变化,有变化立刻停止,十分便于观察各种隐含错误。

使用 rr 进行debug相关推荐

  1. 《Debug Hacks》和调试技巧

    Debug Hacks 作者为吉冈弘隆.大和一洋.大岩尚宏.安部东洋.吉田俊辅,有中文版<Debug Hacks中文版-深入调试的技术和工具>.这本书涉及了很多调试技巧,对调试器使用.内核 ...

  2. 《Debug Hacks》和调试技巧【转】

    转自:https://blog.csdn.net/sdulibh/article/details/46462529 Debug Hacks 作者为吉冈弘隆.大和一洋.大岩尚宏.安部东洋.吉田俊辅,有中 ...

  3. 32.全网最详细trap讲解,trap语法格式,信号和用途,最常用的信号,trap常用的命令,ctrl + c,信号屏蔽和恢复,trap -,debug,exit,return示例,三个综合案例

    文章目录 语法详解 trap格式 信号和用途 最常用的信号 trap常用的命令 示例 ctrl + c 示例 信号屏蔽和恢复 trap - 示例 debug示例 exit示例 return示例 综合案 ...

  4. pycharm debug后会出现 step over /step into/step into my code /force step into /step out 分别表示...

    1.debug,全部打印 2.打断点debug,出现单步调试等按钮,只运行断点前 3.setup over 调试一行代码 4.setup out 运行断点后面所有代码 5.debug窗口显示调试按钮 ...

  5. Debug常用指令和DOSBox使用步骤

    Debug是Dos系统中著名的调试程序,也可以运行在Windows系统实模下. 优点: 使用Debug程序,可以查看CPU各种寄存器的内容,内存的情况,并且在机器指令级跟踪程序的运行. DosBox: ...

  6. Java IDEA Debug进制二维数组

    1.Debug模式 1.1 什么是Debug模式 是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序. 1.2 Debug介绍与操作流程 如何加断点 选择 ...

  7. [Advance] How to debug a program (上)

    Tool GDB Examining Memory (data or in machine instructions) You can use the command x (for "exa ...

  8. Keil中使用宏编译来定义DEBUG输出

    使用宏编译来格式化调试信息,是一个不错的方法,即可以在需要的时候打印出信息,还可以格式化我们所需要的输出. #define DEBUG 1 #if (DEBUG == 1) #define DBG(A ...

  9. linux 内核调试信息在哪里,Linux kernel debug技巧----开启DEBUG选项

    Linux kernel debug技巧----开启DEBUG选项 作者:wowo 发布于:2016-11-1 19:39 分类:Linux应用技巧 kernel的source code中有很多使用p ...

最新文章

  1. 送一台高清航拍无人机
  2. docker安装clickhouse_docker 安装ClickHouse
  3. 前端工程基础知识点--Browserslist (基于官方文档翻译)
  4. 思科服务器远程管理,Telnet远程访问思科交换机、路由器 TCP协议分析工具
  5. arraylist扩容是创建新数组吗 java_手撕ArrayList底层,透彻分析源码
  6. java中的动态图表_Java报表软件--动态图表
  7. 计算机execl必背知识点,【分享】Excel必备基础知识(1)
  8. 实现不同电脑共享一套鼠标键盘------ShareMouse
  9. c++ 11/14新特性
  10. 三菱FX2N系列PLC的模拟量扩展模块简介
  11. Swift5使用KVC报setValue:forUndefinedKey
  12. 魔百盒B863AV3.2-M,B863AV3.1-M2线刷+卡刷精简固件(S905L3A-B)
  13. 利用python合并csv文件
  14. Cypress 前端测试工具的基本使用和相关命令总结
  15. 采购订单文本复制规则
  16. 2021年全球及中国天然橡胶产量、消费量及价格走势分析:中国市场需求量急速增涨[图]
  17. uni 页面加载完毕_uniapp小程序如何等待数据回来才加载页面?
  18. 若依@Excel注解自动获取导出字段,字典解析
  19. Xcode8 支持iOS7等设备调试的方法
  20. mac vbox 共享文件夹_Mac系统VirtualBox中CentOS 7.2启用共享文件夹

热门文章

  1. vivado hls 2019.1百度云安装包,包含license
  2. 2021年全国职业院校技能大赛(中职组)网络安全竞赛试题(1)详细解析教程
  3. 把扫描文件转变为word文档的最实用的四款OCR识别软件
  4. 可能是史上最适合入门SQL语句的教程——自学SQL网学习笔记
  5. 2021年终总结:平凡的一年
  6. 治愈选车困难症只需11.98万起!传祺影酷正式上市
  7. 2D游戏知识点二、Unity 2D游戏主角基本功能和动画
  8. 2-44钟静雯_day04
  9. java学生喂养宠物
  10. 远程开机并不难 用开机棒轻松打开局域网多台电脑