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命令调试

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了。

ROS 代码调试常用方式配置_第1张图片

 

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

Valgrind调试

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

ROS 代码调试常用方式配置_第2张图片

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

Callgrind:函数调用关系分析

Cachegrind:缓存丢失、命中分析

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

Massif:堆栈分析 

Valgrind调试:

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

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

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

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

ROS 代码调试常用方式配置_第3张图片

 

你可能感兴趣的:(Ros,基本操作理论基础,及,Vscode调试保姆级教程,开发语言)