简介
strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通 过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。
[html]
root@ubuntu:/usr# strace cat /dev/null
execve("/bin/cat", ["cat", "/dev/null"], [/* 22 vars */]) = 0
brk(0) = 0xab1000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
mmap(NULL, 8192, PROT_READ|PROT_W...
首先查看系统是否已经安装了strace工具
#starce --help我是用的这个,现在不知道正确的方法!
strace下载地址
下载下来的是strace-4.7.tar.xz解压
#7za e strace-4.7.tar.xz
#tar -xvf strace-4.7.tar
#cd strace-4.7
#config --prefix=/
#make && make install
大致步骤就是这样的,
现在可以用strace -p pid(要查看进程的pid)
如何知道运行软件的pid,
1:top命令可以查看
2:service vsftpd status
。。。。
慢慢调试吧!...
最近一直被linux cpu 占用100%所困扰,不得不学习如何进看top分析所占CPU程序,并分析其工作过程中所调用那些东西。
本着解决问题的目的,开始了centos下又一旅程。
strace 命令是一种强大的工具,它能够显示所有由用户空间程序发出的系统调用。
strace 显示这些调用的参数并返回符号形式的值。strace 从内核接收信息,而且不需要以任何特殊的方式来构建内核。
下面记录几个常用 option .
1 -f -F选项告诉strace同时跟踪fork和vfork出来的进程
2 -o xxx.txt 输出到某个文件。
3 -e execve 只记录 execve 这类系统调用
—————————————————
进程无法启动,软件运行速度突然变慢,程序的”SegmentFault”等等都是让每个Unix系统用户头痛的问题,
本文通过三个实际案例演示如何使用truss、strace和ltrace这三个常用的调试工具来快速诊断软件的”疑难杂症”。
...