ROS::多种方式的GDB调试

ROS::多种方式的GDB调试

参考连接:wiki.ros.org/roslaunch/Tutorials/Roslaunch Nodes in Valgrind or GDB

方式1:xterm

工具:GDB,xterm

不可用ssh登录到机器人调试机器人。
本机调试:该方式需要电脑有显示器。

  1. 安装GDB和xteram
sudo apt-get install xterm
sudo apt-get install gdb
  1. 修改节点启动launch文件
    例如:
<node pkg="pkg" type="pkg" respawn="false" name="name" output="screen" launch-prefix="xterm -e gdb --args"/>

然后在启动该节点,会出现下面窗口:

在窗口中输入run并回车,节点开始执行,当出现执行问题时输入bt即可查看执行堆栈中的内容,可能看到出错的地方在哪里。

方式2:直接在终端中运行

工具:GDB

该方式可以ssh登录到机器人调试。

  1. 安装GDB
sudo apt-get install gdb
  1. 修改节点启动launch文件
    例如:
<node pkg="pkg" type="pkg" respawn="false" name="name" output="screen" launch-prefix="gdb -ex run --args"/>

然后在启动该节点,程序就在终端窗口中运行,执行时出现问题直接在终端中输入bt既可查看堆栈。

方式2:后台启动

工具:GDB,screen

该方式可以ssh登录到机器人调试.
可以后台执行不用一直监测着执行过程.
也可以随时查看节点执行的状态,比如std::cout、ROS_INFO、ROS_ERROR等输出的信息.
也可以将终端输出的信息保存为文件。

  1. 安装GDB
sudo apt-get install gdb
  1. 安装screen
sudo apt-get install screen
  1. 有关screen的用法可以自行查一下,不再介绍。

  2. 修改节点启动launch文件

  3. 例1:

<node pkg="pkg_name" type="name" respawn="false" name="name" output="screen" launch-prefix="screen -m -d gdb -ex run --args"/>

开启一个终端后输入 screen -ls可以看到
20801为id号节点出现错误时可以执行screen -r 20801就可以GDB调试了,更多操作请看screen相关介绍。

  1. 例2
<node pkg="pkg_name" type="name" respawn="false" name="name" output="screen" launch-prefix="screen -m -S navi -d gdb -ex run --args"/>

设置screen 名字为navi,节点出现错误时可以执行screen -r navi就可以GDB调试了,更多操作请看screen相关介绍。

  1. 例3
<node pkg="pkg_name" type="name" respawn="false" name="name" output="screen" launch-prefix="screen -m -L -Logfile /home/lhh/navi.log -S navi -d gdb -ex run --args"/>

设置screen 名字为navi且终端信息保存到/home/lhh/navi.log文件中,节点出现错误时可以执行screen -r navi就可以GDB调试了,更多操作请看screen相关介绍。

  1. 命令行输入screen -d 暂时断开(detach)screen会话
  2. screen会话中先按下Ctrl+a,然后再按d字母键,暂时分离该会话
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值