strace 命令基本介绍strace是 Linux 系统中用于跟踪进程系统调用和信号的强大调试工具。它可以捕获并记录进程执行的所有系统调用、传递的参数、返回值以及接收到的信号是程序员和系统管理员进行程序调试、性能分析和问题诊断的必备工具。资料合集https://pan.quark.cn/s/6fe3007c3e95、https://pan.quark.cn/s/561de99256a5、https://pan.quark.cn/s/985f55b13d94、https://pan.quark.cn/s/d0fb20abd19a语法strace [OPTIONS] COMMAND [ARG...] strace [OPTIONS] -p PID常用选项基本选项-p, --attachPID附加到正在运行的进程-f, --follow-forks跟踪子进程-F, --follow-vforks跟踪 vfork 创建的进程-b, --detach-onSIGNAL收到指定信号时分离-D, --daemonize以守护进程模式运行输出控制选项-o, --outputFILE将输出写入指定文件-s, --string-limitN限制字符串显示长度默认32-e, --exprSET过滤系统调用-e traceSET指定要跟踪的系统调用-e signalSET指定要跟踪的信号-e readSET跟踪指定文件描述符的读操作-e writeSET跟踪指定文件描述符的写操作时间选项-t, --timestamp在输出前加上时间-tt, --time-details显示微秒级时间戳-T, --syscall-times显示每个系统调用的耗时-r, --relative-timestamps显示相对时间戳统计选项-c, --summary-only只显示系统调用统计摘要-C, --summary显示统计摘要但不影响正常输出-S, --sortCOLUMN按指定列排序统计结果其他选项-v, --verbose详细模式显示完整参数-h, --help显示帮助信息-V, --version显示版本信息使用示例1. 跟踪命令执行stracels输出示例execve(/bin/ls, [ls], 0x7ffeefbffb88 /* 70 vars */) 0 brk(NULL) 0x555f7a3b8000 access(/etc/ld.so.preload, R_OK) -1 ENOENT (No such file or directory) openat(AT_FDCWD, /etc/ld.so.cache, O_RDONLY|O_CLOEXEC) 32. 附加到运行中的进程strace-p12343. 将输出写入文件strace-ostrace_output.txtls4. 跟踪特定系统调用strace-etraceopen,closelsstrace-etracenetworkcurlhttp://example.comstrace-etracefilels5. 显示系统调用耗时strace-Tls输出示例execve(/bin/ls, [ls], 0x7ffeefbffb88 /* 70 vars */) 0 0.000012 brk(NULL) 0x555f7a3b8000 0.0000036. 跟踪子进程strace-f./myprogram7. 只显示统计摘要strace-cls输出示例% time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 33.33 0.000002 2 1 execve 22.22 0.000001 1 1 brk 11.11 0.000001 1 1 access8. 显示时间戳strace-tlsstrace-ttlsstrace-rls9. 详细模式显示完整参数strace-vls10. 过滤信号strace-esignalnonels输出格式说明基本输出格式syscall(arg1, arg2, arg3) return_value常见系统调用类别类别说明示例file文件操作open, close, read, writenetwork网络操作socket, connect, send, recvprocess进程操作fork, execve, exitmemory内存操作brk, mmap, munmapipc进程间通信pipe, msgget, semget常见错误码错误码含义ENOENT没有这样的文件或目录EACCES权限被拒绝EAGAIN资源暂时不可用ENOMEM内存不足EPERM操作不允许实用技巧调试程序启动问题strace./myprogram21|head-50查找程序读取的配置文件strace-etraceopen,openat ./myprogram21|grep-E(config|conf)分析程序性能瓶颈strace-c-T./myprogram跟踪网络操作strace-etracenetworkcurlhttp://example.com调试权限问题strace-etraceaccesschmod755myfile查找程序卡住的原因strace-p$(pidof myprogram)分析子进程创建strace-f-etracefork,vfork,execve ./myprogram相关命令ltrace跟踪库函数调用gdbGNU 调试器perf性能分析工具tcpdump网络数据包捕获lsof显示打开的文件pmap显示进程内存映射ps显示进程信息valgrind内存调试工具注意事项权限要求strace需要 root 权限才能跟踪其他用户的进程性能影响跟踪会显著影响程序性能不要在生产环境频繁使用输出量复杂程序的输出可能非常大建议使用-o选项保存到文件过滤选项使用-e选项可以减少输出量只关注感兴趣的系统调用时间精度使用-tt选项可以获得微秒级精度子进程跟踪使用-f选项跟踪子进程安装方法Debian/Ubuntuapt-get install straceCentOS/RHELyum install strace总结strace是 Linux 系统中强大的系统调用跟踪工具。通过strace程序员和系统管理员可以深入了解程序的运行机制诊断启动问题、权限问题、性能问题等。它是调试和分析程序行为的必备工具掌握strace的使用对于理解 Linux 系统底层机制非常有帮助。
Linux命令:strace
发布时间:2026/5/22 17:18:40
strace 命令基本介绍strace是 Linux 系统中用于跟踪进程系统调用和信号的强大调试工具。它可以捕获并记录进程执行的所有系统调用、传递的参数、返回值以及接收到的信号是程序员和系统管理员进行程序调试、性能分析和问题诊断的必备工具。资料合集https://pan.quark.cn/s/6fe3007c3e95、https://pan.quark.cn/s/561de99256a5、https://pan.quark.cn/s/985f55b13d94、https://pan.quark.cn/s/d0fb20abd19a语法strace [OPTIONS] COMMAND [ARG...] strace [OPTIONS] -p PID常用选项基本选项-p, --attachPID附加到正在运行的进程-f, --follow-forks跟踪子进程-F, --follow-vforks跟踪 vfork 创建的进程-b, --detach-onSIGNAL收到指定信号时分离-D, --daemonize以守护进程模式运行输出控制选项-o, --outputFILE将输出写入指定文件-s, --string-limitN限制字符串显示长度默认32-e, --exprSET过滤系统调用-e traceSET指定要跟踪的系统调用-e signalSET指定要跟踪的信号-e readSET跟踪指定文件描述符的读操作-e writeSET跟踪指定文件描述符的写操作时间选项-t, --timestamp在输出前加上时间-tt, --time-details显示微秒级时间戳-T, --syscall-times显示每个系统调用的耗时-r, --relative-timestamps显示相对时间戳统计选项-c, --summary-only只显示系统调用统计摘要-C, --summary显示统计摘要但不影响正常输出-S, --sortCOLUMN按指定列排序统计结果其他选项-v, --verbose详细模式显示完整参数-h, --help显示帮助信息-V, --version显示版本信息使用示例1. 跟踪命令执行stracels输出示例execve(/bin/ls, [ls], 0x7ffeefbffb88 /* 70 vars */) 0 brk(NULL) 0x555f7a3b8000 access(/etc/ld.so.preload, R_OK) -1 ENOENT (No such file or directory) openat(AT_FDCWD, /etc/ld.so.cache, O_RDONLY|O_CLOEXEC) 32. 附加到运行中的进程strace-p12343. 将输出写入文件strace-ostrace_output.txtls4. 跟踪特定系统调用strace-etraceopen,closelsstrace-etracenetworkcurlhttp://example.comstrace-etracefilels5. 显示系统调用耗时strace-Tls输出示例execve(/bin/ls, [ls], 0x7ffeefbffb88 /* 70 vars */) 0 0.000012 brk(NULL) 0x555f7a3b8000 0.0000036. 跟踪子进程strace-f./myprogram7. 只显示统计摘要strace-cls输出示例% time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 33.33 0.000002 2 1 execve 22.22 0.000001 1 1 brk 11.11 0.000001 1 1 access8. 显示时间戳strace-tlsstrace-ttlsstrace-rls9. 详细模式显示完整参数strace-vls10. 过滤信号strace-esignalnonels输出格式说明基本输出格式syscall(arg1, arg2, arg3) return_value常见系统调用类别类别说明示例file文件操作open, close, read, writenetwork网络操作socket, connect, send, recvprocess进程操作fork, execve, exitmemory内存操作brk, mmap, munmapipc进程间通信pipe, msgget, semget常见错误码错误码含义ENOENT没有这样的文件或目录EACCES权限被拒绝EAGAIN资源暂时不可用ENOMEM内存不足EPERM操作不允许实用技巧调试程序启动问题strace./myprogram21|head-50查找程序读取的配置文件strace-etraceopen,openat ./myprogram21|grep-E(config|conf)分析程序性能瓶颈strace-c-T./myprogram跟踪网络操作strace-etracenetworkcurlhttp://example.com调试权限问题strace-etraceaccesschmod755myfile查找程序卡住的原因strace-p$(pidof myprogram)分析子进程创建strace-f-etracefork,vfork,execve ./myprogram相关命令ltrace跟踪库函数调用gdbGNU 调试器perf性能分析工具tcpdump网络数据包捕获lsof显示打开的文件pmap显示进程内存映射ps显示进程信息valgrind内存调试工具注意事项权限要求strace需要 root 权限才能跟踪其他用户的进程性能影响跟踪会显著影响程序性能不要在生产环境频繁使用输出量复杂程序的输出可能非常大建议使用-o选项保存到文件过滤选项使用-e选项可以减少输出量只关注感兴趣的系统调用时间精度使用-tt选项可以获得微秒级精度子进程跟踪使用-f选项跟踪子进程安装方法Debian/Ubuntuapt-get install straceCentOS/RHELyum install strace总结strace是 Linux 系统中强大的系统调用跟踪工具。通过strace程序员和系统管理员可以深入了解程序的运行机制诊断启动问题、权限问题、性能问题等。它是调试和分析程序行为的必备工具掌握strace的使用对于理解 Linux 系统底层机制非常有帮助。