使用kdbg或nemiver调试ROS

Kdbg

Kdbg是KDE环境下的一个gdb的前端GUI,使用起来比较友好,速度也很快,安装和使用请参考:

http://www.kdbg.org/

在UBUNTU下可以直接使用APT安装:

sudo apt-get install kdbg

安装运行后会遇到类似“MNG error 11: Function is invalid at this point; chunk MHDR; subcode 0:0”的错误

将/usr/share/kde4/apps/kdbg/icons/hicolor/22x22/actions/pulse.mng删除即可

Nemiver

nemiver是基于GNOME的gdb前端,非常强大,但是速度有点慢

在UBUNTU下直接使用apt安装:

sudo apt-get install nemiver

在ROS中使用调试器(gdb前端)必须使用DEBUG模式编译待运行的包,具体方式是:

catkin_make -DCMAKE_BUILD_TYPE=Debug

使用调试器的方式有两种:

一种是在启动节点(Node)后,使用ATTACH的方式进行调试。这种方式KDBG与nemiver都支持,这里不多做介绍,只需要知道node的执行文件一般在

<CATKIN_WORKSPACE>/devel/lib/<PKG_NAME>下,如:~/code/ros/catkin_ws/devel/lib/robot_localization

另一种方式是在launch文件中指定node启动的命令前缀,即node的launch-prefix属性,请参考如下链接:

Roslaunch Nodes in Valgrind or GDB

node

我们也可以指定launch-prefix为其他工具,比如我刚刚介绍的nemiver和kdbg

例如:

#localization_starter.launch<launch>
  <arg name="debugger" default="" />

  <node pkg="robot_localization"     type="ekf_localization_node"     name="ekf_localization"     clear_params="true"     launch-prefix="$(arg debugger)" />
</launch>

运行localization_starter.launch的时候就可以使用这样的方式制定debugger为nemiver:

roslaunch <MY_PKG_NAME>  localization_starter.launch debugger:=nemiver

nemiver可以直接指定为launch-prefix,但是kdbg的使用稍微麻烦一点,因为kdbg的命令行格式与该方式不兼容

使用prefix方式需要工具支持如下形式的命令行格式:

<TOOL_NAME> <EXEC_NAME> <EXEC_ARGS...>,如:nemiver git status

但kdbg的命令行格式为:kdbg -a "<EXEC_ARGS...>" <EXEC_NAME>

因此必须使用脚本进行格式转换,我使用的脚本如下:

#!/bin/bash

KDBG=kdbg

PROGRAM=$1
shift
ARGS="[email protected]"

if [ "${ARGS}" != "" ] && [ "${PROGRAM}" != "" ]; then
  ${KDBG} -a "${ARGS}" "${PROGRAM}"
else
  if [ "${PROGRAM}" != "" ]; then
    ${KDBG} -a " " "${PROGRAM}"
  else
    ${KDBG}
  fi
fi

将其命名为:kdbg-ros并添加到环境变量PATH中即可在ROS的launch文件中使用,仍以前面的localization_starter.launch为例:

roslaunch <MY_PKG_NAME>  localization_starter.launch debugger:=kdbg-ros

在KDBG启动后设置断点,之后点Run即可启动节点进行调试

时间: 2024-10-13 00:18:57

使用kdbg或nemiver调试ROS的相关文章

如何更加便捷的调试ROS(Robot Operating System)

关于调试ROS的一点点自己的经验分享: 1. 本地编写调试ROS C++程序时候可以选择Qt+ros_qtc_plugin,qt版本可以选择5.8或者5.7,plugin的版本是5.7,不过在两个版本的qt上都能用, 安装和使用可以参考wiki:https://github.com/ros-industrial/ros_qtc_plugin/wiki 2.有时候可能需要远程调机器,一般是通过wifi局域网内进行机器的调试,机器人的机载PC跑ros程序,通过设置本地的PC的IP后可以开启rviz.

Linux Kernel - Debug Guide (Linux内核调试指南 )

http://blog.csdn.net/blizmax6/article/details/6747601 linux内核调试指南 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级调试 ***第一部分:基础知识*** 总纲:内核世界的陷阱 源码阅读的陷阱 代码调试的陷阱 原理理解的陷阱 建立调试环境 发行版的选择和安装 安装交叉编译工具 bin工具集的使用 qemu的使用 initrd.img的原理与制作 x86虚拟调试环境的建立 arm虚拟调试环境的建立 arm开发板调试环

linux内核调试指南

linux内核调试指南 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级调试 ***第一部分:基础知识*** 总纲:内核世界的陷阱 源码阅读的陷阱 代码调试的陷阱 原理理解的陷阱 建立调试环境 发行版的选择和安装 安装交叉编译工具 bin工具集的使用 qemu的使用 initrd.img的原理与制作 x86虚拟调试环境的建立 arm虚拟调试环境的建立 arm开发板调试环境的建立 gdb基础 基本命令 gdb之gui gdb技巧 gdb宏 汇编基础--X86篇 用户手册 AT&

ROS机器人程序设计(原书第2版)补充资料 (壹) 第一章 ROS系统入门

书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用. 第一章主要包括ROS简介和安装等,这里补充一些知识点,扩充书本内容. 第1页: ubuntu系统的安装,推荐镜像地址:http://cdimage.ubuntu.com/ 依据需要可以下载最适合自己版本并搭配对应的ROS.这里推荐LTS,长期支持版本. 更多内容查看Ubuntu官网及相关论坛:https://www.ubuntu.com/ 第2页: ROS支持非常多的机器人,可以参考:ht

ubuntu16.04使用Qt开发ROS

本文介绍一种Qt下进行ROS开发的完美方案,使用的是ros-industrial的Levi-Armstrong在2015年12月开发的一个Qt插件ros_qtc_plugin,这个插件使得Qt"新建项目"和"新建文件"选项中出现ROS的相关选项,让我们可以直接在Qt下创建.编译.调试ROS项目,也可以直接在Qt项目中添加ROS的package.urdf.launch,感谢Levi-Armstrong.目前这个插件还在不断完善,有问题或者其他功能建议可以在ros_qt

一起做RGB-D SLAM 第二季 (一)

小萝卜:师兄!过年啦!是不是很无聊啊!普通人的生活就是赚钱花钱,实在是很没意思啊! 师兄:是啊…… 小萝卜:他们都不懂搞科研和码代码的乐趣呀! 师兄:可不是嘛…… 小萝卜:所以今年过年,我们再做一个SLAM吧!之前写的那个太烂了啦,我都不好意思说是我做的了! 师兄:嗯那可真是对不住你啊…… 小萝卜:没事!你再写一个好一点的,我就原谅你了!写完再请我吃饭吧! 师兄:啊,好的…… 小萝卜:师兄你别这么没精神啊!加油咯! 前言 在经过了一番激烈的思想斗争之后呢,师兄厌倦了年假的无聊生活,开始写<一起做

Roboware Studio 简单使用与调试(ROS kinetic)

基于网址:https://blog.csdn.net/qq_41450811/article/details/80305846 使用过程中进行补充(红色字体),整理如下: 1.新建工作区,选择用户目录下 ,名称 :catkin_ws 2.选择Release , 然后在上面菜单栏ROS点击构建:或者那个小锤子 3.测试ros是否正常运行,运行roscore : 如右上角的加号可以添加终端,因ros使用一个终端是不够的. 4.测试正常~! ctrl + c 取消 5.新建一个包 6.catkin_m

Ubuntu 16.04安装Kdbg替代Insight实现汇编的调试

Insight已经不能使用APT进行安装,且如果使用源码安装时需要修改.所以只能放弃,转投使用Kdbg. 安装: sudo apt-get install kdbg 使用: nasm -f elf64 -g -F stabs sandbox.asm -o sandbox.o ld -o sandbox sandbox.o kdbg sanbox

Rplidar学习(三)—— ROS下进行rplidar调试

一.建立工作空间.编译包 mkdir -p ~/catkin_rplidar/src #创建目录 cd ~/catkin_rplidar/src #打开目录 #下载rplidar_ros数据包,进行移动 git clone https://github.com/robopeak/rplidar_ros mv ~/rplidar_ros ~/catkin_rplidar/src #返回根目录,进行编译 cd ~/catkin_rplidar catkin_make #添加环境变量 source d