Asan 与 ros
- 背景: 在调试 ros package 的 memory leak
- 方案:
- 在 CMake 中添加
set(CMAKE_CXX_FLAGS "-std=c++14 ${CMAKE_CXX_FLAGS} -fsanitize=address -g -fno-omit-frame-pointer")- 如果是 roslaunch 启动的(param 较多),正常启动一遍节点,无视 ASan 报错信息,新开一个 terminal,保存参数到文件
rosparam dump filename- 加载参数
rosparam load filename- 找到 libasan:
find /usr -name "libasan.so"- 调试:
LD_PRELOAD=/usr/lib/gcc/x86_64-linux-gnu/9/libasan.so ./devel/lib/pkg_name/exec_name
本文介绍使用Asan(AddressSanitizer)来定位和解决ROS包中的内存泄漏问题。通过配置CMake选项并利用rosparam工具保存及加载参数,帮助开发者有效地进行调试。同时,提供了具体的调试步骤和命令。
1382

被折叠的 条评论
为什么被折叠?



