Linux下排查设备崩溃工具

可以学习的路径:

https://www.cnblogs.com/lidabo/category/542683.html

背景

对稳定性缺陷解决的思考
一,缺陷解决的方法
二,抽象问题的解决过程,演绎和归纳
三,代码质量及意识,程序员的职业素养
 

一、最常见的gdb和gdb server

1、排查设备堆、栈越界崩溃问题

2、排查设备卡死问题

见文章:

https://blog.csdn.net/zhang_yin_liang/article/details/79589356

二、strace工具

1、排查设备卡死,strace -p来跟踪

按照strace官网的描述, strace是一个可用于诊断、调试和教学的Linux用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。

参考文章:

https://www.jianshu.com/p/33521124bdf2

三、dmalloc

1、检查堆越界

2、检查内存泄漏

参考文章:

https://www.cnblogs.com/lidabo/p/5486009.html

https://blog.csdn.net/liujianfeng1984/article/details/11958201

四、tcmalloc

1、排查内存泄漏问题产生的OOM

TCMalloc全称Thread-Caching Malloc,即线程缓存的malloc,实现了高效的多线程内存管理,用于替代系统的内存分配相关的函数(malloc、free,new,new[]等)。

参考文章:

https://www.jianshu.com/p/11082b443ddf

https://www.cnblogs.com/my_life/articles/4661790.html

五、mtrace

1、排查内存泄漏问题产生的OOM

mtrace的原理是记录每一对malloc-free的执行,若每一个malloc都有相应的free,则代表没有内存泄露,对于任何非malloc/free情況下所发生的内存泄露问题,mtrace并不能找出来。

#include <iostream>
#include <mcheck.h>
#include <stdlib.h>
using namespace std;

int main()
{
    setenv("MALLOC_TRACE","output",1);   // stdlib.h ,指定输出文件名
    mtrace();
    int *p1=new int;
    int *p2=new int;   // line 11
    int *p3=(int*)malloc(sizeof(int));
    int *p4=(int*)malloc(sizeof(int));   // line 13

    delete p1;
    free(p3);
    return 0;
}

参考文章:

https://www.cnblogs.com/guxuanqing/p/5868725.html

https://my.oschina.net/letiantian/blog/754506

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值