![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
调试手段
文章平均质量分 67
Imwell
这个作者很懒,什么都没留下…
展开
-
collectd+influxdb+grafana监控系统性能
常用配置:1. influxdb + grafana安装在一台机器负责监控数据收集及展示2. collectd安装在一台或多台被监控服务端,跟监控端的25826端口对接,上传本地监控的数据3. influxdb监控25826端口以获得数据,自身处于8086端口,grafana从8086获得数据进行展示......原创 2022-06-09 19:14:53 · 430 阅读 · 0 评论 -
breakpad简单使用
breakpad简单使用breakpad是google开发的一个跨平台C/C++ dump捕获开源库,崩溃文件使用微软的minidump格式存储,也支持发送这个dump文件到你的服务器,breakpad可以在程序崩溃时触发dump写入操作,也可以在没有触发dump时主动写dump文件。breakpad支持windows、linux、macos、android、ios等。目前已有Google Chrome, Firefox, Google Picasa, Camino, Google Earth等项目使用。原创 2022-06-01 21:12:31 · 2141 阅读 · 0 评论 -
mutex死锁问题排查
使用gdb$ g++ -g -O0 -fno-omit-frame-pointer ./test.cc -o test -lpthread$./test before lock_guard重新开启一个终端,打开gdb$ sudo gdb attach $(pidof test)GNU gdb (Ubuntu 9.2-0ubuntu1~20.04.1) 9.2Copyright (C) 2020 Free Software Foundation,原创 2022-05-27 21:27:46 · 1721 阅读 · 0 评论 -
使用LD_PRELOAD加载malloc free wrapper库
1.测试程序编译运行测试代码test.c#include <stdio.h>#include <stdlib.h>int main(){ printf("main func addr:%p\n", main); printf("start malloc\n"); char * pc1 = malloc(10); char * pc2 = malloc(10); printf("start free\n"); free(pc1)原创 2022-05-27 17:11:22 · 605 阅读 · 0 评论 -
valgrind工具简单使用
1概述1.1 介绍Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合。Valgrind由内核(core)以及基于内核的其他调试工具组成。内核类似于一个框架(framework),它模拟了一个CPU环境,并提供服务给其他工具;而其他工具则类似于插件 (plug-in),利用内核提供的服务完成各种特定的内存调试任务。Valgrind的体系结构如下图所示:1.2 ...原创 2020-04-07 17:29:37 · 256 阅读 · 0 评论 -
perf+FlameGraph火焰图性能分析
1、perf简单实用性能调优时,我们通常需要分析查找到程序百分比高的热点代码片段,这便需要使用 perf record 记录单个函数级别的统计信息,并使用 perf report 来显示统计结果。比如代码perf_flamegraph_test.c如下:#include <pthread.h>#include <stdio.h>void func_d(){...原创 2020-04-07 14:45:16 · 400 阅读 · 0 评论 -
信号量死锁排查手段
信号量死锁表现就是系统卡死了,但是在多线程程序中并不是那么容易跟踪。一种排查方法是#define MODULE_LOCK(sem_handle) \ do{ \ bool cret; \ module_pwarning("lock in\n"); \ cret=os_acquire...原创 2019-09-05 09:52:03 · 434 阅读 · 0 评论 -
调试信息之网络打印
使用串口打印调试信息,通常设置为115200bps, N81,这种设置每秒打印10K+字节的调试信息。比如打印信息:[I:ERROR][T:19/09/04 16:15:19:649][F:ca.c][C:ca_update_sys_mode][L:1979] Get CA status failed,有100+字节,打印这条信息耗时约为10ms。目前应用,只打印关键信息,每次操作有120+条...原创 2019-09-05 10:04:00 · 361 阅读 · 0 评论 -
根据epc和ra定位linux kernel panic位置
一、背景项目中出现了一次插拔sc卡导致死机的问题,不幸的是没有保存下来coredump文件,只有简要的epc和ra信息。尝试复现问题,一直不能复现。所以尝试通过epc和ra去找到问题。二、分析过程log信息如下,目的是想定位到出错的源代码。[10:39:09]Activating card[10:39:10]ATR: 3F EF 07 7F F8 FF FF 07 03 FF FF 80...原创 2019-09-05 10:51:33 · 4578 阅读 · 0 评论