自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

undead的专栏

solaris core crash mdb dtrace

  • 博客(38)
  • 资源 (4)
  • 收藏
  • 关注

原创 如何通过solaris自带的命令,迅速定位模块问题

异常情况:湖北移动168的机器发型异常情况,就是Bwisp,主容器的进程CPU占有率一直保持在50%,高居不下,和其他省份的主容器CPU占用保持在1%,相差了近50倍,遂进一步来查明原因1. 监控系统,发现问题通过系统自带的监控系统资源占用命令:prstat执行结果:(此图bwisp主容器进程正常)2.查看是此进程的哪个线程导致,通过命令prstat的微观模式来查看此进程的情况,出问题的时候,此进程的PID为22376,执行命令:prstat -mL –p 22376 2,执行结果如图:3. 可以看

2011-05-25 13:40:00 672

原创 Solaris 进程 heap段内存释放小研

最近观察生成平台上面的应用,发现应用进程所占用的内存是只增,不减,于是想深入看看,具体造成的原因。   PID USERNAME  SIZE   RSS STATE  PRI NICE      TIME  CPU PROCESS/NLWP         5506 bwisp    1631M 1501M sleep   53    2  31:27:16 4.1% bwisp/275标红的地方就是的程序运行时间也就是5.12日开始的,到今天也没有几天,初始才300M;现在内存已经占用了1.6G-bash

2011-05-24 15:41:00 1224

原创 程序线程退出后,zombie (僵尸线程)的问题!

作者: uNDeaDEmail: someonebw@gmail.comBlog: http://blog.csdn.net/undead转载请注明出处动态观察生产环境下的进程!pstack 进程名发现如下问题:----------------- lwp# 757 / thread# 757 --------------------ffffffff07413f58 startTaskHook(), exit value = 0x0000000000000000** zombie (exited, n

2011-05-26 14:55:00 3398

原创 The Solaris 10 top 11-20

Solaris 10 has way more features than any release of Solaris that I can remember, and Sun's been marketing the hell out of them. Here's my top 10 list roughly in order of how cool I think each is:DTrace - of course...ZFS - the amazing new file system

2011-05-26 14:10:00 490

原创 Number 11 of 20: libumem

libumemIn Solaris 2.4 we replaced the old buddy allocator1 the slab allocator2 invented by Jeff Bonwick. The slab allocator is covered in pretty much every operating systems text book -- and that's because most operating systems are now using it. In Sola

2011-05-26 14:09:00 639

原创 字节对齐和C/C++函数调用方式学习总结

前言:《***软件编程规范》中提到:"在定义结构数据类型时,为了提高系统效率,要注意4字节对齐原则……"。本文解释x86上字节对齐的机制,其他架构读者可自行试验。同时,本文对C/C++的函数调用方式进行了讨论。1.先看下面的例子:?View Code CPP12345678910111213struct A{ char c1; int i; short s; int j; }a; struct B{

2011-05-26 14:06:00 791

原创 结构在优化编译中的对齐问题 pragma(push, N) pragma(pop)

结构在优化编译中的对齐问题Q: 我正在写一个流模块,其中用到了#pragma pack(),当使用gcc -D_KERNEL -c abc.cld -r -o abc abc.o编译链接时,一切正常。为了获得64-bit模块,我必须使用Sun Workshop 5.0,结果导致系统崩溃。访问http://docs.sun.com/htmlcoll/coll.32.8/iso-8859-1/CPPPG/Pragmas.html#15434上面说必须在编译链接应用程序的时候指定"-misalign"

2011-05-26 14:05:00 875

原创 内存溢出处理方法 给些建议

最近做了个任务,内存溢出问题;静态影像下无问题,可是在动态影像下执行rep时量测元素400-500笔时就会内存溢出,调试很久也无进展,求教各方圣神终无结果,最后找出一篇文章供大家赏阅。如遇到内存溢出问题时或许有点帮助。还有可以链接下载的内存检测工具1. ccmalloc-Linux和Solaris下对C和C++程序的简单的使用内存泄漏和malloc调试库。2. Dmalloc-Debug Malloc Library.3. Electric Fence-Linux分发版中由Bruce Perens编写的m

2011-05-26 14:04:00 766

原创 如何在JVM挂起的时候调试(翻译)

第一次翻译,大家凑合着看,英文好的请看原文:http://www.unixville.com/~moazam/stories/2004/05/18/debuggingHangsInTheJvm.html在JVM挂起时调试线程有时,JAVA用户或开发者会遇到JAVA应用程序看起来像挂起的问题,而且没有核心文件产生,没有任何的IO检测,这个过程只是坐在那里等待...通常这些问题可以追溯到操作系统和的JVM级别线程。以下内容是从Solaris方面来介绍的,也许不久我会写些针对Linux线程的东西两个线程

2011-05-26 13:59:00 827

原创 A Performance Optimization for C/C++ Systems That Employ Time-Stamping

A Performance Optimization for C/C++ Systems That Employ Time-StampingPrint-friendly VersionBy Amjad Khan and Neelakanth Nadgir, November 23, 2004This article describes how to optimize

2011-05-26 13:51:00 725

原创 Bus error的解决方法

在x86+Linux上写的程序,在PC机上运行得很好。可是使用ARM的gcc进行交叉编译,再送到DaVinci目标板上运行的时候,出现了Bus error。出现的位置如下(其中Debug的内容是我在程序中添加的调试信息):root@211.69.193.189:~# arm_v5t_le-gcc -g shit.croot@211.69.193.189:~# ./a.outDebug: malloc space for the actual data: temp_buf = 0x13118Debug: i

2011-05-26 13:48:00 5060

转载 浅谈内存泄漏

<br />文章标题:浅谈内存泄漏<br />原 作 者:johnnyxia<br />原 出 处:www.csdn.net<br />发 布 者:loose_went<br />发布类型:转载<br />发布日期:2006-09-05<br />今日/总浏览:1/5095<br /> <br />对于一个c/c++程序员来说,内存泄漏是一个常见的也是令人头疼的问题。已经有许多技术被研究出来以应对这个问题,比如Smart Pointer,Garbage Collection等。Smart Pointer技术

2011-05-26 13:45:00 343

原创 段错误bug的调试

我们在用C/C++语言写程序的时侯,内存管理的绝大部分工作都是需要我们来做的。实际上,内存管理是一个比较繁琐的工作,无论你多高明,经验多丰富,难免会在此处犯些小错误,而通常这些错误又是那么的浅显而易于消除。但是手工"除虫"(debug),往往是效率低下且让人厌烦的,本文将就"段错误"这个内存访问越界的错误谈谈如何快速定位这些"段错误"的语句。下面将就以下的一个存在段错误的程序介绍几种调试方法:1 dummy_function (void)2 {3 unsigned char *ptr = 0x00

2011-05-26 13:41:00 375

原创 总结段错误(Segmentation fault)

1)往受到系统保护的内存地址写数据有些内存是内核占用的或者是其他程序正在使用,为了保证系统正常工作,所以会受到系统的保护,而不能任意访问.1#include 2int3main()4{5int i = 0;6scanf ("%d", i); /* should have used &i */7printf ("%d/n", i);8return 0

2011-05-26 13:38:00 759

原创 C的动态内存管理--mallac()和free()

关于c的动态内存管理一直是个经久不衰的话题,面试也是基本上都会考的,本来感觉已经明白了,但是今天使用的时候一不小心导致程序崩溃了,因此深入的去查了下资料,收获不少...贴出来与大家分享...先贴个错误代码:int * ptr = (int *)malloc(256);ptr = ptr + 3;//对指针进行一个偏移操作free(ptr);这就是一段错误代码..?相信已经有人看出来错误在哪里了...如果不明白的继续往下面看...先就这个错误讲解一下,free(ptr)函数释放内存的时候是需要从

2011-05-26 13:35:00 461

原创 信号 解释 / SIGSTERM SIGKILL 区别

信号 解释 / SIGSTERM SIGKILL 区别SIGHUP 终止进程 终端线路挂断SIGINT 终止进程 中断进程SIGQUIT 建立CORE文件终止进程,并且生成core文件SIGILL 建立CORE文件 非法指令SIGTRAP 建立CORE文件 跟踪自陷SIGBUS 建立CORE文件 总线错误SIGSEGV 建立CORE文件 段非法错误SIGFPE 建立CORE文件 浮点异常SIGIOT 建立CORE文件 执行I/O自陷SIGKILL 终止进程 杀死进程SIGPIPE

2011-05-26 13:31:00 1165

原创 指针 段错误 segament fault

列,例程序:#include int main(int argc,char ** argv){char * p ;//p = '/0';//p = "abcdefg";//*p = "abcdefg"[5];//segament fault //段错误*p = "abcdefg";//segament fault //段错误//p = &("abcdefg" [5]);printf("%s/n",p); return 0;}段错误的,两行,是因为指针变量p,是野指针

2011-05-26 13:29:00 637

原创 Solaris下的性能与调整

作者:C.Arthur 收藏Solaris下的性能与调整[ZT]http://www.chinaunix.net 作者:C.Arthur 发表于:2004-03-19 19:39:201. 着手性能问题2. 性能监测2.1. 从暴露出来的问题开始2.2. 知道你的系统在正常情况下会怎样2.3. 寻找性能瓶颈3. 一些常见问题和一些建议3.1. 64位的运算与容量能带来什么3.2. 空闲内存3.3. 优先内存页面调度3.4. 隐私的共享内存(ISM-Intimate Shared Memory)3.5.

2011-05-26 13:18:00 781

原创 一次解决系统性能的日记(Solaris8)

bug id:有一台server(solaris 5.8),使用top测试,发现IDEL的CPU每次都是0%,但是查看各个进程使用的CPU时间百分比,没有一个进程的使用率高!这是怎么回事呢?百思而不解,后来使用vmstat 2查看(一般的,第一行输出都是无用的,错误的),发现us的百分比是30%,而sy的百分比是60%,这就说明cpu时间都是在系统空间耗去的。(我们还有另外两台吃CPU很厉害的机子,但是都是很正常的吃的;在那两台机子上面,us的百分比是60%,而sy的百分比是30%)。再使用命令prst

2011-05-26 13:17:00 427

原创 技巧: 使用truss、strace或ltrace诊断软件的"疑难杂症"

李凯斌 (pythonic@yeah.net), 项目经理Unix文化、自由软件思想和传统黑客精神对李凯斌的"毒害"颇深,他白天是国内某家知名软件企业的项目经理,晚上则是一个Unix Hacker,喜欢摆弄Linux、FreeBSD和Python。可以通过 pythonic@yeah.net和他取得联系。MSN:hackkernel@hotmail.com。简介进程无法启动,软件运行速度突然变慢,程序的"Segment Fault"等等都是让每个Unix系统用户头痛的问题,本文通过三个实际案例演示

2011-05-26 13:14:00 475

原创 利用LD_PRELOAD发现程序潜在的问题

Solaris上,常常可以用LD_PRELOAD辅助mdb做一些调试、测试工作,可以发现一些其它手段难以发现的问题;最近就遇到一个。事情源于替换了程序中的某个基础部分之后,程序运行起来占用的物理内存有了较为显著的增加,却难以一下子拿出来个让人信服的原因。于是自然想到了去看一下程序真正运行的时候,某一部分内存是谁分配的。之前用 pmap -xalsF pid发现【heap】部分有显著增加,又不是在新加入的那个动态库里边。Solaris上有强大的mdb,辅助不同的模块可以得出很多有意思的结论,其中libume

2011-05-26 13:09:00 782

原创 Core Dump Management on the Solaris OS

Core Dump Management on the Solaris OSPrint-friendly VersionBy Adam Zhang, Sun Microsystems, April 2007, Updated June 2007Abstract: Abnormal termination of a process will trigger a co

2011-05-26 13:08:00 643

原创 Tutorial: DTrace by Example

Tutorial: DTrace by ExampleBy Rickey C. Weisner, September 2009DTrace, or Dynamic Tracing, is a powerful diagnostic tool introduced in the Solaris 10 OS. Since its introduction, it has been implemented in ot

2011-05-26 12:57:00 832

原创 Solaris常用调试工具

Solaris常用调试工具By judy on 八月 31, 2007本文总结了solaris常用的调试工具及命令。这些命令可用于查看系统或进程状态,控制、调试进程及跟踪调试核心。solaris常用调试命令列表查看进程状态pargs查看进程或core的参数、环境变量等pflags查看进程标志位值pcred查看进程权限(credentials)pldd查看进程链接的动态链接库psigsignal的处理方式pstack打印调用栈pmap打印进程地

2011-05-26 11:39:00 923

原创 Solaris中如何检测用户应用程序内存泄漏

Solaris中如何检测用户应用程序内存泄漏By judy on 十一月 30, 2007内存泄漏(Memory Leak)通常是由应用程序没有释放其在堆(heap)上分配的内存而造成的。对于由应用程序引起的内存泄漏,我们可以借助libumem来方便地进行调试。libumem是一个运行在用户模式的内存分配程序库。并已包含在 Solaris 9及以后的Solaris版本中。1 检测应用程序的内存泄漏本文将以一个示例简单说明使用libumem的步骤。示例程序memleak.c如下://* memleak.

2011-05-26 11:27:00 744

原创 Solaris中如何检测内核代码的内存泄漏

Solaris中如何检测内核代码的内存泄漏By judy on 十一月 30, 2007本文将以一个驱动程序(tleak.c tleak.conf)为例说明如何利用mdb的::findleaks命令检测内核代码是否存在内存泄漏。请注意,上一篇文章给的示例应用程序其内存泄漏发生在堆(heap)上,当程序退出的时候,堆随之被释放掉,所以并不会对系统造成影响。而本文提供的示例驱动tleak将在内核产生内存泄漏,所以请谨慎使用,不熟悉内核的朋友请不要在自己的机器上运行该驱动及以下步骤。(USE AT YOU

2011-05-26 11:24:00 857

原创 Solaris中检测内存异常访问

Solaris中检测内存异常访问By judy on 十一月 30, 2007本文介绍了在solaris中如何利用核心内存分配的调试功能检测内存异常(corruption)。引起内存异常的常见操作包括:越界访问访问未被初始化的数据访问已被释放的内存我们用前一篇blog中生成的核心core文件为例,一步步进行分析。核心缓存(Kernel Memory Cache)首先回忆一下,为了发现内存泄漏运行mdb的::findleaks其输出为:> ::findleaksCACHELEAK

2011-05-26 11:17:00 787

原创 使用MDB查看变量的值

本节描述使用MDB查看core文件中变量的基本知识基本概念:一般程序发生coredump,80%的可能是由于参数的值不对造成的(其他可能是堆栈溢出、多线程等问题造成的)。对于可以复现的问题,一般拿到函数堆栈,通过走读代码基本上就可以定位。对于无法复现的问题,大部分情况需要通过查看变量的值来定位。(注:网上很多文章都是介绍通过反汇编定位哪条语句引起的coredump,个人认为这种方法比较繁琐(需要重新编译),且对优化后的程序用处不大,本文就不讨论了。)变量可以分为两类,一类是基本类型,例如int等,可

2011-05-26 11:10:00 1452

原创 一种定位内存泄露的方法(Solaris)

问题:客户测试的镜像环境出现一个3.8G的core文件,查看堆栈发现是new失败了导致进程abort。因为是32位应用程序,应该是所有的heap空间都被用光了,导致new失败。推测有几种可能:1) 内存泄露导致内存耗尽。2) 有些静态对象处理的不合理,导致一直在增大。3) 有死循环,导致一直在做类似list::insert这样的操作,最终耗尽内存。定位思路:如果是第二种情况,则使用pstack core看到的所有堆栈中,一定有个堆栈是包含死循环的。使用pmap core(或者在mdb中使用::m

2011-05-26 10:59:00 725

原创 Dtrace VS truss

这篇文章大体是翻译:http://www.brendangregg.com/DTrace/dtracevstruss.html收获非常大,尝试的翻译下,和大家分享。DTrace VS truss1 问题提出2 分析一个经典的性能问题3 使用truss分析4 使用dtrace分析5 dtrace VS truss 对系统的影响6 WHY1 问题提出用过DTrace的都说其非常强大,也说其对系统的影响甚小且是安全的,然一直都没有明了的数据做支撑,更没有具体的实验提供说明。本篇文章尝试通过一个具体实例(

2011-05-26 10:57:00 1068

原创 Enabling User-Controlled Collection of Application Crash Data With DTrace

Enabling User-Controlled Collection of Application Crash Data With DTraceBy Greg Nakhimovsky and Morgan Herrington, May 2005Abstract: This article introduces AppCrash, a tool for the automatic collection of diagnostic and debu

2011-05-26 10:55:00 684

转载 解决Solaris应用程序开发内存泄漏问题

内存泄漏是应用软件开发过程中经常会遇到的问题,应用长期内存泄漏会占用大量操作系统内存资源,直接导致应用程序运行不稳定,严重时甚至还会影响到操作系统的正常运行。为了找到应用程序内存泄漏点,许多开发人员不得不在上千行乃至几十万行源程序中加入更多的调试代码,试图从调试信息中找到内存泄漏的根源,但通常来讲这种方法是事倍功半的。幸运的是,Solaris平台提供了好几个实用的工具,能够辅助开发人员对内存泄漏根源进行定位。笔者参考了 Sun公司官方网站上相关的英文技术文档,并认为这些对于我们中国广大的Sun技术爱好者有很

2011-05-26 10:44:00 1123

转载 Solaris学习笔记(6)

Solaris学习笔记(6) - 07年9月修订版作者: BadcoffeeEmail: blog.oliver@gmail.comBlog: http://blog.csdn.net/yayong2007年9月本文介绍使用kmdb和mdb调试Solaris内核的基本方法,kmdb和mdb是Solaris默认安装的内核模块调试器,可以用于调试和定位内核模块及驱动程序发生的错误。本文仅用于学习交流目的,错误再所难免,如果有勘误或疑问请与作者联系。本文首次发布于07年3月,此后因网友发现错误而修订于

2011-05-26 10:30:00 2213

转载 Solaris学习笔记(5)

Solaris学习笔记(5)作者: BadcoffeeEmail: blog.oliver@gmail.comBlog: http://blog.csdn.net/yayong2007年2月本文介绍使用kmdb和mdb调试Solaris内核的基本方法,kmdb和mdb是Solaris默认安装的内核模块调试器,可以用于调试和定位内核模块及驱动程序发生的错误。本文仅用于学习交流目的,错误再所难免,如果有勘误或疑问请与作者联系。关键词:mdb/kmdb/panic/hung/crashdump/dum

2011-05-26 10:28:00 1599

转载 Solaris学习笔记(4)

Solaris学习笔记(4)作者: BadcoffeeEmail: blog.oliver@gmail.comBlog: http://blog.csdn.net/yayong2007年2月很久没有写blog了,工作越来越忙,生活中琐事也不少,一天中的时间所剩无几了。当初很想写出精品的技术文章来,到后来才发现,要写一篇精品真的很难。从基础理论到实际案例,想深入潜出又要有一定水准,真的是太难了,这中间得花费写作者的多少心智?现在才能体会到成为一名出色的技术作家,需要的不仅仅是技术功底而已。所以,还是先

2011-05-26 10:27:00 898

转载 Solaris学习笔记(3)

Solaris学习笔记(3)作者: BadcoffeeEmail: blog.oliver@gmail.comBlog: http://blog.csdn.net/yayong2006年3月很久以前就看过alert7写的那篇ELF 动态解析符号过程(修订版),大概是他在学习ELF文件格式时写的吧。OpenSolaris之后,其内核所有代码全世界都可以访问到,于是就有了这 篇文章。本文仅用于学习交流目的,因此没有经过严格校对,错误再所难免,如果有勘误或疑问请与我联系。关键词:Dynamic

2011-05-26 10:24:00 759

转载 Solaris学习笔记(2)

作者: BadcoffeeEmail: blog.oliver@gmail.comBlog: http://blog.csdn.net/yayong2005年7月1. 一段shell code的分析最近新发现的一个Solaris的安全漏洞可以使一个非特权用户利用一个很简单的攻击程序得到系统的root权限,为了不让用Solaris系统的人遭暗算,具体细节就不说了。毕竟这篇文章不是教别人攻击别人系统的黑客教程:)这里只研究攻击程序里面的一段shell code。问题:什么是shell code?要了

2011-05-26 10:20:00 585

转载 Solaris学习笔记(1)

作者: BadcoffeeEmail: blog.oliver@gmail.comBlog: http://blog.csdn.net/yayong2005年6月一直以来就很想深入的学习Solaris,今天就开始这漫长的跋涉之路吧:)这方面比较好的参考资料有:1. Solaris internalJim Mauro and Richard McDougall写的这部书实在是太经典了,第一版是有中文版的,第二版马上也要出了。下面是这本书的网站,上面有作者的blog和其它一些有用的资料:http

2011-05-26 10:06:00 603

Solaris 开发者安全性指南.pdf

Solaris 开发者安全性指南 Solaris 开发者安全性指南

2011-03-16

Solaris 动态跟踪指南.pdf

Solaris 动态跟踪指南 Dtrace的相关使用指南

2011-03-16

Solaris 10 资源管理器开发者指南.pdf

Solaris 10 资源管理器开发者指南.pdf

2011-03-16

Oracle Solaris 开发者文档介绍.pdf

Oracle Solaris 开发者 文档 介绍

2011-03-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除