memory corruption检查的一些工具

工作调试ROS底座遇到内存corruption问题,找了一些工具可供试用:

1. gcc的mcheck,没有有效的错误,错误多,但没有研究价值。

2. efence, 可以见测内存越界,但是不支持c++new, delete.结果是会在很多new操作符处crash.

3. Duma, efence的improve版本,支持c++,但是我用的时候跑nodeletmanager就会直接crash到stdc++里面。

efence和duma都有安装包可用。

在编译时,需要修改我们的make文件,比如:

SET(CMAKE_EFENCE_LINK_FLAG "-lefence -umalloc")

SET(CMAKE_EXE_LINKER_FLAGS"${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EFENCE_LINK_FLAG}")

SET(CMAKE_LIB_LINKER_FLAGS"${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EFENCE_LINK_FLAG}")

efence和duma使用方法类似。

都支持在运行程序前export LD_PRELOAD=libefence.so/libduma.so来动态加载,从而不用静态链接。

还可以在makefile里面将libefence.a或者libduma.a直接静态链接进来。


4. Valgrind, 输出一些未初始化的变量使用,经过修改,问题依然没有解决。

valgring输出较多,对C++的reference支持不好,有错报。强项在内存泄漏。

使用注意:因为valgrind不支持树莓派的某些指令,所以需要禁用如下库:

/etc/ld.so.preload文件中注掉下面代码。

#/usr/lib/arm-linux-gnueabihf/libcofi_rpi.so


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值