一. 参考资料
1. Valgrind对ROS程序的可视化分析_valgrind ros-优快云博客
2. https://www.zhihu.com/search?type=content&q=valgrind
3.
二.安装
sudo apt-get install valgrind
sudo snap install massif-visualizer --edge
三. 调试过程
1. 初始状态
2. 使用run rosnode的方式进行debug
valgrind --tool=memcheck --leak-check=yes --log-file=valgrind.log ./devel/lib/trajectory_optimization/trajectory_optimization
有一点需要注意的是,一个是在一个terminal里面运行上面的命令之后,无论是Ctrl^C还是Ctrl^Z都不能再正常结束命令,需要将这个终端窗口关闭才可以,这个时候valgrind.log文件会增加内容
还有一点是感觉valgrind运行一个ROS节点,可能ROS节点会运行很慢,就我的这个节点会在RVIZ输出一些东西,但是迟迟没有输出,但是也可以生成对应的调试的文件的
然后就会在目录下生成valgrind.log调试文件,这个调试文件如下图所示:
看了一下,发现我在gridPathFinder::initGridNodeMap函数有问题,就是是谁在用的时候用的不太对
回去找代码,发现是多次调用了initGridNodeMap()这个函数,但是没有释放相应的内存,改过之后就好了,可以重复分析判断是否已经纠正错误
后边再记录一下如何使用launch文件的prefix前缀来处理