strace 说明(手册+指南)
strace是Linux中一个非常好用的调试和跟踪工具。它可以接管被跟踪进程执行的系统调用和收到的信号。然后把每一个执行的系统调用的名字,参数和返回值打印出来。程序员也可以通过strace找到问题出现在user层还是kernel层。下面是几个例子:
#strace cat /dev/null
open(“/dev/null”, O_RDONLY) = 3 会显示系统调用的名字,参数和返回值
如果有信号的话,也会打印出信号的的符号和字符串:
sigsuspend([] <unfinished …>
— SIGINT (Interrupt) —
+++ killed by SIGINT +++
参数也以符号的形式打印:
open(“xyzzy”, O_WRONLY|O_APPEND|O_CREAT, 0666) = 3
结构体中的每个成员也会显示出来:
lstat(“/dev/null”, {st_mode=S_IFCHR|0666, st_rdev=makedev(1, 3), …}) = 0
字符指针以C字符串的形式显示:
read(3, “root::0:0:System Administrator:/”…, 1024) = 422
出错的返回值会显示注释:
lstat(“/foo/bar”, 0xb004) = -1 ENOENT (No such file or directory)
如果不想跟踪所有的系统调用,也可以通过命令行参数指定跟踪的系统调用的类型:
-e trace=file 跟踪以文件名做参数的系统调用
-e trace=process 跟踪与进程管理有关的系统调用
-e trace=network 跟踪与网络有关的系统调用
-e trace=signal 跟踪与信号有关的系统调用
-e trace=ipc 跟踪与IPC有关的系统调用
-e trace=desc 跟踪与文件描述符有关的系统调用
另附strace指南供详细参阅:
[wp-pdf-view swf=”http://www.uini.net/wp-content/uploads/2010/04/strace.swf”
width=”650px”
height=”1000px”
player=”1″
/]
本文出自 传播、沟通、分享,转载时请注明出处及相应链接。
本文永久链接: https://www.nickdd.cn/?p=110