ROS 代码调试常用方式配置

调试工具

ROS集成了很多调试工具如

代码调试、可视化调试、单元测试、通信调试、系统检查、系统仿真等。

 代码调试:GDB、valgrind、log(rqt_logger_level)等

 可视化调试:网络拓扑rqt_graph、消息rqt_console、

                         日志rqt_logger_level、三维可视化RVIZ、趋势图rqt_plot等

 单元测试:C++单元测试框架gtest、Python单元测试框架nosetests

 通信调试:rostopic 、rosbag等

 系统检查:roswtf、rosnode、rosservice 、rosparam等  系统仿真:URDF、Gazebo等

代码调试三种:

 日志调试                            GDB调试                             Valgrind调试

日志调试

1、日志等级

 ROS的日志具有DEBUG、INFO、WARN、ERROR、FATAL等5个级别

 对应于ROS_DEBUG、ROS_INFO、ROS_WARN、ROS_ERROR、ROS_FATAL

     等五个宏,依次按严重程度递增

2、日志位置

 但日志目录地址由ROS_LOG_DIR变量定义,默认ROS_LOG_DIR为~/.ros/log。

 可以在~/.bashrc文件中设置ROS_LOG_DIR变量定义日志目录

GDB调试步骤   重点!!

 步骤1  进入调试模式

 步骤2  配置目标文件

 步骤3  开始调试

步骤1 :进入调试模式

GDB是GNU出品的一个C/C++调试工具,通过设置断点可以查看程序的当前变量和环境。

通过命令进入ROS调试模式,命令如下:

$catkin config -DCMAKE_BUILD_TYPE=Debug

GDB命令调试

<node name="client" pkg="example_3" type="client" output="screen" launch-prefix="xterm-egdb--args"/>

xterm命令表示新建一个terminal,-e参数告诉xterm执行剩下的命令行

 在VSCode中GDB可视化调试:

在launch.json中配置program项

通过菜单“运行”->“启动调试”启动可视化调试

配置目标文件

{
"version": "0.2.0", "configurations": [
{
"name": "Debug",
 "type":"cppdbg", 
"request": "launch",
//“hello”为欲调试的可执行程序,开发者需根据实际路径修改
"program": "${workspaceRoot}/devel/lib/example_1/hello"
"cwd": ".", 
}

开始调试

设置好断点,再启动Master节点,

然后就可以通过“运行”-->“启动调试”开始调试ROS了。

 

潜了解一下,不多重点使用VScode:

Valgrind调试

Valgrind由模拟CPU的Core调试工具插件如Memcheck插件组成。 

Memcheck:内存泄露、不正确的内存分配/释放

Callgrind:函数调用关系分析

Cachegrind:缓存丢失、命中分析

Helgrind:多线程场景访问竞争分析

Massif:堆栈分析 

Valgrind调试:

如果希望利用valgrind来检测内存泄漏,并进行性能分析,配置launch文件,方法如下:

<node name="hello" pkg="example_1" type="hello" output="screen" launch-prefix="valgrind--leak- check=full --show-leak-kinds=all"/>

–track-origins:yes 是否显示未定义的变量

-leak-check:no|summary|full 当服务器退出时是否收集输出内存泄漏

--show-leak-kinds:all 显示内存泄露的类型

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

忒懂先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值