6.18-gdb,ros and roslaunch with gdb

TOC

参考

《ROS机器人程序开发》
《嵌入式Linux开发基础知识》
roslaunch wiki

前言

  • 这是必须学习的技能,但是不需要精通,应该利用更高层的工具
  • 在ROS项目开发过程中应用,在使用roslaunch过程中应用gdb
  • 在CLion,VSCode使用过程中应用调试功能

gdb学习

  • 是一个用来调试C/C++程序的强力调试器,常用功能有:监视程序中变量的值;设置断点;单步执行

  • 为了使gdb正常工作,你必须使你的程序在编译时包含调试信息gcc -g调试信息包括你程序里的每一个变量的类型和在可执行文件里的地址映射以及源代码的行号。
  • 你可以使用gdb调试一个可执行文件,也可以用gdb检查一个因程序异常终止而产生的core文件,或者与一个正在运行的程序相连。更多请参考gdb -h
  • 命令支持tab补齐特性
使用要点
  • gdb打开调试器
  • file FILE装载指定可执行文件
  • break NUM在指定的行上设置断点
  • bt显示所有的调用栈帧,显示函数的调用顺序
  • clear FILENAME:NUM删除特定源文件行上的断点
  • next在不单步执行进入其他函数的情况下,向前执行一行源代码
  • continue继续执行
  • display EXPR每次程序停止后显示表达式的值,表达式由程序定义的变量组成
  • print EXPR显示表达式的值
  • info files显示被调试文件的详细信息
  • info func显示所有函数名称
  • info local显示当函数中的局部变量信息
  • info prog显示被调试程序的执行状态
  • info var显示所有的全局和静态变量名称
  • kill终止正在被调试的程序
  • list显示源代码段
  • make在不退出gdb的情况下运行make工具

ROS node debug with gdb(使用gdb调试ROS节点)

  • 从调试任意C/C++可执行文件的标准方法开始
roscore
gdb bin/example
r
  • ros节点启动时调用gdb调试器
    需要在launch文件中添加launch-prefix="xterm-egdb--args",该语句意思是:加载节点并等待运行。注意,因为是在xterm中创建gdb绘画,所以还有一个调试窗口。
  • launch-prefix其实是一个前置启动工具,我们同样可以使用launch-prefix="valgrind"来在启动节点之前启动valgrind工具检测内存泄露,并执行性能分析。valgrind.org
  • 更多请见

    How to Roslaunch Nodes in Valgrind or GDB

roslaunch 学习和调试

  • launch文件:功能包名传递给pkg属性,节点名传递给type属性,由于同一个节点可以运行多个实例,因此需要给每个实例一个节点名以作区分,即name属性,最好将这些属性配置输出到屏幕,这样就会在启动节点的shell窗口中输出相应调试信息,output=screen。

实例:调试ROS项目

转载于:https://www.cnblogs.com/lizhensheng/p/11117480.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值