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

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    6.18-gdb,ros and roslaunch with gdb

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/298109

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月15日 下午7:16
下一篇 2023年2月15日 下午7:17

相关推荐