- 博客(19)
- 资源 (8)
- 收藏
- 关注
原创 heapdump定位内存泄露
heaxiazLinux下分析一个core内存泄露的过程(3s大法)对于dump很大的原因分析准备环境找到对应dms.core的jenkins上打包出来的版本程序解压到和core一起的路径/log/core/core/DMS准备工具把heapdump工具也拷贝到/log/core/core/DMS下面Gdb调试gdb -c DMS_12409-1398407860-6.core DMSbt可以清晰的看到是new出异常,而且core这么大,基本可...
2020-09-10 14:24:06
2448
转载 windbg定位死锁问题
操作系统对死锁的描述如下:所谓死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。那么为什么会产生死锁呢?1.因为系统资源不足。2.进程运行推进的顺序不合适。3.资源分配不当。而产生死锁的条件有四个:1.互斥条件:所谓互斥就是进程在某一时间内独占资源。2.请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。3.不剥夺条件:进程已获得资源,在末使用完之前,不...
2020-09-10 14:18:52
820
原创 后台监控脚本
执行./Monitor.sh MTS eth0命令即可,会输出监控信息到excel中,下面是监控脚本实现#!/bin/bash function getNet(){ average=1 band_alarm=0 ...
2020-09-10 10:25:55
385
原创 windbg常见调试命令
一、环境配置C:\MyLocalSymbols;SRV*C:\MyLocalSymbols*http://msdl.microsoft.com/download/symbols; http://10.33.40.55/symbols上面的MyLocalSymbols目录放了系统符号表,网络地址是在本地找不到系统符号表的情况,从网络下载,最后面的是应用程序符号表第一次使用的时候,会从网络...
2019-09-07 11:47:38
610
原创 常见GDB调试命令
Pmap 打印命令格式1、Std::map<int,int> test_mapPmap test_map in tint2、class *test_class;Std::map<int,*test_clss> test_mapPmap test_map int 即可,Pmap test_map int *test_class打印好像会有问题需要安...
2019-09-07 11:46:54
1176
转载 重复释放导致崩溃
我们team有一套C++写的server程序,最近发现它在每次退出的时候会崩溃,core dump文件的栈如下:(gdb) bt#0 0x0000003ea4e32925 in raise () from /lib64/libc.so.6#1 0x0000003ea4e34105 in abort () from /lib64/libc.so.6#2 0x0000003ea4...
2019-08-13 14:13:41
2213
转载 valgrind工具使用
1. 关于编译选项:针对memcheck工具,需要注意以下几点:a. 强烈推荐被调试的目标程序在编译时加入-g参数,这样再运行valgrind memcheck时,可以拿到更为丰富的调试信息,比如行号,调用栈等。b. 当使用-O0编译目标程序时,valgrind可以保证输出的所有警告、错误提示信息都是准确的,副作用是程序运行会非常慢。c. 当使用-O1编译目标程序时,valgrin...
2019-07-26 15:31:27
1254
转载 Address Sanitizer定位内存问题
Address Sanitizer(ASan)是一个快速的内存错误检测工具。这里说明它的用法。参考资料AddressSanitizerhttps://github.com/google/sanitizers/wiki/AddressSanitizer1. 简介Address Sanitizer(ASan)是一个快速的内存错误检测工具。它非常快,只拖慢程序两倍左右(比起Valgrin...
2019-07-23 16:53:40
7494
原创 windows下定位程序cpu使用过高
利用windbg排查CPU占用过高问题问题描述测试我们自己开发程序时,有时会发生CPU占用过高的问题。对于简单的程序,可能还容易排查是哪个线程占用了CPU。而对于类似流媒体,这样庞大的程序,排查难度较大。本篇案例会介绍一种排查此类问题的方法。排查方法排查CPU过高的问题,主要的排查点,就是找到CPU被是哪些线程占用了。确定哪个线程占用CPU过高.windbg的排查方法。第一步,...
2019-07-19 16:33:05
655
转载 gdb数据断点监控
开发中经常遇到某个变量明明已经赋值了,但是最后得到的结果却并非赋予的值。解决这样问题让人很头疼,原因我们可能都知道,可能是内存越界导致这部分值被覆盖掉了,但是什么时候被覆盖掉的呢?总不能在每个怀疑的地方打印这个值吧?这样效率很低,而且定位不一定准确。这个时候使用gdb调试中的watch就可以轻松搞定。顾名思义跟linux中的watch命令类似:实时的监视你需要查看的内容。比如下面程序:#i...
2019-07-11 16:15:02
1307
原创 通过shell脚本实现将top命令监控程序的输出信息和时间信息导入到文件中
#!/bin/bashwhile [ 1 ]do top_print=`top -n 1 -b|grep mgc` time=`date` space=" " print_str=$time$space$top_print echo $print_str >> ./date.txt ...
2019-07-10 19:53:36
3873
转载 windbg默认工作空间设置
一 简介:发现windbg的工作空间来保持窗口布局很方便和和谐,不在为各窗口的拖来拖去而纠结了,就做了几个默认调试环境的工作空间(主要关注窗口布局),现在拿出来分享下,喜欢的朋友下载附近,直接把里面的reg文件导入注册表就好了,当你以某个模式调试的时候会自动加载!一般只使用命令的大牛飘过~~~~二 效果图:突出Command:OD-Style:三 附件说明:Kernel.reg:当进行内核...
2019-07-10 15:27:58
570
原创 Pmap查看内存泄露
Pmap可以查看堆地址信息(程序中new/malloc出来的空间),然后gdb调试查看堆较大的内存块数据信息。(本次测试只是使用了这个功能,是否还有其他牛逼的功能不知道)编写测试代码#include <iostream>#include <string>#include <stdio.h>class mem_test{public...
2019-07-05 15:00:17
7398
转载 libevent数据结构介绍
转载https://blog.youkuaiyun.com/luotuo44/article/details/38374009Libevent源码中有一个queue.h文件,位于compat/sys目录下。该文件里面定义了5个数据结构,其中TAILQ_QUEUE是使得最广泛的。本文就说一下这个数据结构。队列结构体:TAILQ_QUEUE由下面两个结构体一起配合工作。#defin...
2019-03-02 15:37:24
227
转载 Tcp疑难杂症2
7. 疑症(7)TCP的延迟确认机制按照TCP协议,确认机制是累积的,也就是确认号X的确认指示的是所有X之前但不包括X的数据已经收到了。确认号(ACK)本身就是不含数据的分段,因此大量的确认号消耗了大量的带宽,虽然大多数情况下,ACK还是可以和数据一起捎带传输的,但是如果没有捎带传输,那么就只能单独回来一个ACK,如果这样的分段太多,网络的利用率就会下降。为缓解这个问题,RFC建议了一种延迟的...
2019-02-14 15:50:18
355
转载 UDP疑难杂症
转自:https://zhuanlan.zhihu.com/p/25622691引言作为文章”《从TCP三次握手说起—浅析TCP协议中的疑难杂症》”的姊妹篇,很早就计划写篇关于UDP的文章,尽管UDP协议远没TCP协议那么庞大、复杂,但是,要想将UDP描述清楚,用好UDP却要比TCP难不少,于是文章从下笔写,到最终写成,断断续续拖了好几个月。对应系列的上一篇:告知你不为人知的UDP...
2019-02-14 14:18:00
512
原创 网络可以ping通三次握手失败
从抓包分析,发现三次握手请求端发送了syn之后,接收端没有相应ack,而接收端对应的端口是listening状态,而且netstat看没有什么连接,系统可用连接肯定是足够的。猜测是时间戳问题导致,三次握手失败。分析如果将出现问题的机器的时间戳去掉会不会解决问题。针对带有时间戳的tcp syn包不响应的问题,查阅了相关资料得知产生问题的原因是出问题系统中的注册表中有Tcp1323opts这个...
2019-02-07 20:17:22
2905
原创 抓包不丢包udp系统层丢包
问题描述:两个不同的应用程序,分别运行在linux服务器A,linux服务器B,跨网段进行udp数据传输,中间经过一种网闸设备(一种安防行业的跨网段的网络设备),服务器A发送数据,服务器B接收数据,服务器B抓包有数据,但是层用程序没有收到。排查思路如下:1、对应用程序调用系统接口的recv处进行写文件操作,将接收到的数据写入到文件中,发现文件为空,初步认为应用层没有收到数据2、将接收数...
2019-02-07 20:05:37
1752
转载 tcp疑难杂症1
转自http://link.zhihu.com/?target=https%3A//www.qcloud.com/community/article/164816001481011785%3Futm_source%3DCommunity%26utm_medium%3Darticle164816001481011959%26utm_campaign%3DCommunity【引言】说到TCP协...
2017-10-12 15:42:48
2006
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人