DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

随笔分类 -  异常诊断与调试

上一页 1 2 3 4 5 6 7 8 9 10 下一页

摘要:方法一:strace -fp pid , 可以跟踪所有线程, 进程的系统调用。 [root@xxxx]strace -p 24091 Process xxx attached - interrupt to quit [ Process PID=24091 runs in 32 bit mode. ] 阅读全文
posted @ 2016-06-30 14:18 DoubleLi 阅读(8857) 评论(0) 推荐(0) 编辑

摘要:pthread_kill: 别被名字吓到,pthread_kill可不是kill,而是向线程发送signal。还记得signal吗,大部分signal的默认动作是终止进程的运行,所以,我们才要用signal()去抓信号并加上处理函数。 int pthread_kill(pthread_t threa 阅读全文
posted @ 2016-06-30 13:34 DoubleLi 阅读(8382) 评论(0) 推荐(0) 编辑

摘要:我编写了一个循环: long i; for (i = 0; i < 999999; i++) { mt.a += 1; sleep(1); }把它编译成a.out,并在后台执行它:./a.out & [1] 2570 然后用命令gdb ./a.out 2570可以附加到这个进程上。被时进程会中断。 阅读全文
posted @ 2016-06-30 13:32 DoubleLi 阅读(920) 评论(0) 推荐(0) 编辑

摘要:pstack.sh: #! /bin/sh if [ -z $1 ] then echo "gdb script for print stack" echo "usage: $0 pid" exit fi gdb --batch --quiet -x cmds -p $1 cmds: echo /n 阅读全文
posted @ 2016-06-30 09:30 DoubleLi 阅读(664) 评论(0) 推荐(0) 编辑

摘要:#!/bin/bash if (( $# < 1 )) then echo "usage: `basename $0` pid" 1>&2 exit 1 fi if [[ ! -r /proc/$1 ]] then echo "Process $1 not found." 1>&2 exit 1 f 阅读全文
posted @ 2016-06-30 09:29 DoubleLi 阅读(1115) 评论(0) 推荐(0) 编辑

摘要:pstack.sh 改进版本 #!/bin/bashif (( $# < 1 )) ; then echo "usage: `basename $0` pid" 1>&2 exit 1fi if [[ ! -r /proc/$1 ]] ; then echo "Process $1 not foun 阅读全文
posted @ 2016-06-30 09:29 DoubleLi 阅读(298) 评论(0) 推荐(0) 编辑

摘要:1)如何使用strace+pstack利器分析程序性能?http://www.cnblogs.com/bangerlee/archive/2012/04/30/2476190.html此文有详细介绍怎么用strace和pstack2)Linux下多线程查看工具(pstree、ps、pstack)?h 阅读全文
posted @ 2016-06-29 20:01 DoubleLi 阅读(4054) 评论(0) 推荐(1) 编辑

摘要:0.最常用 pstree:[root@iZ25dcp92ckZ temp]# pstree -a|grep multe | | `-multepoolser | | `-multepoolser | | `-2*[{multepoolser}]1. > top可以显示所有系统进程按u, 再输入相应的 阅读全文
posted @ 2016-06-29 20:00 DoubleLi 阅读(7855) 评论(0) 推荐(0) 编辑

摘要:有两种方法:第一种:pstack 进程ID 第二种,使用gdb 然后attach 进程ID,然后再使用命令 thread apply all bt 第三种:strace -f -p pid 该方法和pstack类似 第四中:gcore pid ,输出core文件,gdb cmd corefile 两 阅读全文
posted @ 2016-06-29 19:56 DoubleLi 阅读(25886) 评论(0) 推荐(0) 编辑

摘要:1、TOP命令,找到占用CPU最高的进程 $ top top - 20:11:45 up 850 days, 1:18, 3 users, load average: 1.04, 1.01, 0.99 Tasks: 61 total, 1 running, 60 sleeping, 0 stoppe 阅读全文
posted @ 2016-06-29 19:52 DoubleLi 阅读(6599) 评论(0) 推荐(0) 编辑

摘要:如何定位死循环或高CPU使用率(linux) 确定是CPU过高 使用top观察是否存在CPU使用率过高现象 找出线程 对CPU使用率过高的进程的所有线程进行排序 ps H -e -o pid,tid,pcpu,cmd --sort=pcpu |grep xxx 得到如下结果,其中线程2909使用了7 阅读全文
posted @ 2016-06-29 16:59 DoubleLi 阅读(1107) 评论(0) 推荐(0) 编辑

摘要:原文链接 简介 进程无法启动,软件运行速度突然变慢,程序的"Segment Fault"等等都是让每个Unix系统用户头痛的问题,本文通过三个实际案例演示如何使用truss、strace和ltrace这三个常用的调试工具来快速诊断软件的"疑难杂症"。 truss和strace用来 跟踪一个进程的系统 阅读全文
posted @ 2016-05-13 17:40 DoubleLi 阅读(2580) 评论(0) 推荐(0) 编辑

摘要:原文链接 常用内存泄露检测手段有 1 mtrace 2 memwatch 3 mpatrol 4 dmalloc 5 dbgmem 6 valgrind 7 Electric Fence dmalloc是一个简单易用的C/C++内存leak检查工具,以一个运行库的方式发布。 dmalloc能够检查出 阅读全文
posted @ 2016-05-12 17:32 DoubleLi 阅读(1142) 评论(0) 推荐(0) 编辑

摘要:话说“工欲善其事,必先得其器”,用C语言写程序,最怕遇到个什么内存泄漏,内存越界访问了,心里那个急啊。。。 如果在i368-linlux上,valgrind工具是首选,但在arm-linux平台上,如何呢,dmalloc就是一个不错的选择。当然,IBM的purify是另外一个级别的选手,不提也罢。 阅读全文
posted @ 2016-05-12 15:57 DoubleLi 阅读(1438) 评论(0) 推荐(0) 编辑

摘要:下面是我实际在开发环境里面做的dmalloc移植时候的一些随笔 配置PC的dmalloc环境1. 首先把源码包打开,进入dmalloc文件夹2. ./configure 配置Makefile,我是加了线程选项的,所以我的是./configure --enable-threads3. 生成Makefi 阅读全文
posted @ 2016-05-12 15:50 DoubleLi 阅读(621) 评论(0) 推荐(0) 编辑

摘要:一谈到内存泄露, 多数程序员都闻之色变。 没错, 内存泄露很容易引入, 但很难定位。 以你我的手机为例(假设不经常关机), 如果每天泄露一些内存, 那么开始的一个星期, 你会发现手机好好的, 当内存泄露积累到一定程度, 那就是各种卡死了, 系统异常, 最后死机, 不得不重启。 如果搞开发, 遇到内存 阅读全文
posted @ 2016-05-12 11:47 DoubleLi 阅读(973) 评论(0) 推荐(0) 编辑

摘要:前言 所有使用动态内存分配(dynamic memory allocation)的程序都有机会遇上内存泄露(memory leakage)问题,在Linux里有三种常用工具来检测内存泄露的情況,包括: 1. mtrace mtrace是三款工具之中是最简单易用的,mtrace是一个C函數,在<mch 阅读全文
posted @ 2016-05-12 10:23 DoubleLi 阅读(2181) 评论(0) 推荐(0) 编辑

摘要:话说“工欲善其事,必先得其器”,用C语言写程序,最怕遇到个什么内存泄漏,内存越界访问了,心里那个急啊。。。 如果在i368-linlux上,valgrind工具是首选,但在arm-linux平台上,如何呢,dmalloc就是一个不错的选择。当然,IBM的purify是另外一个级别的选手,不提也罢。 阅读全文
posted @ 2016-04-18 20:00 DoubleLi 阅读(576) 评论(0) 推荐(0) 编辑

摘要:1. 下载源码: http://valgrind.org/downloads/valgrind-3.9.0.tar.bz2 2. 加压缩: mkdir sw cd sw tar zxf valgrind-3.9.0.tar.bz2 3. 修改代码: cd valgrind-3.9.0/ vim co 阅读全文
posted @ 2016-04-18 19:57 DoubleLi 阅读(1065) 评论(0) 推荐(0) 编辑

摘要:Valgrind 概述 体系结构 Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合。Valgrind由内核(core)以及基于内核的其他调试工具组成。内核类似于一个框架(framework),它模拟了一个CPU环境,并提供服务给其他工具;而其他工具则类似于插件 (p 阅读全文
posted @ 2016-04-18 19:55 DoubleLi 阅读(1655) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 8 9 10 下一页