一、简介
1、strace是一个可用于诊断、调试和教学的Linux用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。
2、pstack是一个基于GDB的脚本命令,可显示每个进程的栈跟踪。pstack 命令必须由相应进程的属主或 root 运行。可以使用 pstack 来确定进程挂起的位置。此命令允许使用的唯一选项是要检查的进程的 PID。文末附pstack脚本源码。
strace跟踪程序使用的底层系统调用,可输出系统调用被执行的时间点以及各个调用耗时;pstack工具对指定PID的进程输出函数调用栈。
二、strace 交叉编译
strace 源码下载地址为 : https://sourceforge.net/projects/strace/files/strace/
下面以strace-4.11 ,marvell 78k 平台为例,介绍下交叉编译配置编译步骤。
1、配置
./configure --host=arm-marvell-linux-gnueabi CC=arm-marvell-linux-gnueabi-gcc LD=arm-marvell-linux-gnueabi-ld --prefix=/work/app_project/strace/strace-4.11/_install
2、编译
make
make install
三、使用说明
1、pstack
pstack是一个基于GDB的脚本命令,可显示每个进程的栈跟踪。pstack 命令必须由相应进程的属主或 root 运行。可以使用 pstack 来确定进程挂起的位置。此命令允许使用的唯一选项是要检查的进程的 PID。
pstack
注:如果gdb命令不在标准路径 /usr/bin/下,使用前需要先编辑 pstack脚本,写入正确的gdb路径
2、strace
strace主要用来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等,一般使用格式为:
strace -o trace.txt -Ttt -f -p
常用选项介绍如下:
-o filename
将strace的输出写入文件filename
-p pid