快速业务通道

Linux故障分析常用命令

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-04
1、strace是一个程序调试小工具,它会跟踪程序运行时,所做的事情,与系统的交互情况. 用法: strace默认是将信息输出屏幕上面,为了便于分析结果,可以将输出结果保存在文件中,如strace -o out.txt 程序. 在深入探索细节之前,先来看看每一行的基本结构.Strace记录了程序所发出的每一次系统调用,并且各自显示在单独的一行中.系统调用的名字出现在每一行的起始,参数出现在括号里面,返回值则在等号后面,是一行的终结.命令ls –l的头几行输出基本上是如下这个样子: execve("/bin/ls", ["ls", "-l"], [/* 21 vars */]) = 0
brk(0) = 0×619000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b412f2b9000
uname({sys="Linux", node="juliet.example.com", …}) = 0 第一行显示的是一个execve的系统调用,其参数如下:
当前可执行程序的位置 (/bin/ls)
一个从命令行传递过来的参数数组 (ls与-l)
一个指向21个环境变量的指针,也是传递给该程序的.
返回值为0,表示执行成功.这就是所有系统调用都相同的基本结构. 所有在后台的内幕
接下来的几行跟内存管理有关.Brk改变数据段的大小,而mmap用来返回一个进程可用的内存位置.(如需要更多信息,请尝试man 2 mmap.) 再下面一行是uname系统调用,用来显示系统的详细信息.Uname所返回的是一个指针,它指向存储这些信息的一个数据结构.系统调用经常会返回指针:这是一个内存引用,告诉你到哪里去寻找这些信息.如果你是一台计算机,这非常有用,但如果你是一个人就未必了;因此为了方便起见,每当 __strace__看到一个指针的时候,它就自动帮你进行查找,然后返回(一部分)指针指向的内容.这正是上面在uname系统调用那里所发生的事情. 如果你继续查看strace的输出,你就会看到很多access和open的调用.Access查找一个文件(如果没找到就返回-1和一个错误码),然后检查当前程序是否有访问权限.Open试图打开一个文件,如果成功的话就会将其连接到一个文件句柄(从3开始,0-2被用于STDIN、STDOUT 和STDERR)并返回这个句柄.然后,fstat会获取连接到该句柄的文件的有关信息,句柄通过第一个参数传递而来,就像这样(注意第二个参数是一个指针!): fstat(3, {st_mode=S_IFREG|0644, st_size=53482, …}) = 0
在另一个mmap调用以后,文件将会被关闭.在ls的输出中,你会看到这个序列在库文件上面重复许多遍.而在那以后,对于每一个列出的文件还有 lstat、lgetxattr和getxattr等调用.这都是对每个文件获取信息用的.,每个文件都会按这种方式写到输出文件:
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=3661, …}) = 0
write(1, "-rw——- 1 juliet juliet 10"…, 72) = 72
编号为1和2的文件句柄 (STDOUT和STDERR)将会关闭,于是一切都完成了.

本文出自 “开源技术架构、网站运维” 博客,请务必保留此出处http://nettudou.blog.51cto.com/1958330/450734

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号