1. strace
功能
strace
用于追踪系统调用和信号,是诊断和调试程序的强大工具。
bash
strace [options] -p <pid>
常用选项
-p <pid>: 附加到指定的进程。
-c: 显示系统调用的统计信息,包括总调用数、总时间等。
-e trace=<event>: 只跟踪特定类型的系统调用,例如:
-e trace=file:跟踪文件相关的系统调用。
-s <string_len>: 设置输出字符串的最大长度。
-o <output_file>: 将输出写入指定文件。
示例:
strace -p 1234
strace -c -p 1234
strace -e trace=file -p 1234
使用场景
- 诊断应用程序的错误。
- 分析系统调用的性能。
- 检查应用程序的安全行为。
2. ltrace
功能
ltrace
用于跟踪用户程序调用的动态库函数。
用法
bash
ltrace [options] -p <pid>
常用选项
-p <pid>: 附加到指定进程。
-e <event>: 指定要跟踪的库函数,例如:-e malloc;
-o <output_file>: 将输出写入指定文件。
示例
bash
ltrace -p 1234
ltrace -e malloc -p 1234
使用场景
- 分析程序与共享库的交互。
- 检查程序使用的函数和参数。
3. ftrace
功能
ftrace
是 Linux 内核提供的跟踪机制,可用于追踪内核活动。
用法
- ftrace 的配置和使用一般涉及到
/sys/kernel/debug/tracing
目录。 - 启用 ftrace 需要 root 权限。
常用操作
-
启用跟踪:
-
通过写入文件来启用特定的跟踪功能
bashecho function > /sys/kernel/debug/tracing/current_tracer
-
2.查看情况
bash
cat /sys/kernel/debug/tracing/trace
- 禁用跟踪:
bash
echo 0 > /sys/kernel/debug/tracing/tracing_on
使用场景
- 深入分析内核函数调用。
- 调试内核模块。
- 性能调优。
4. dtrace
功能
dtrace
是一个动态追踪工具,能够从用户空间和内核空间进行监控,主要用于 Solaris 系统,但某些 Linux 发行版提供支持。
用法
bash
dtrace [options] -p <pid>
常用选项
-p <pid>: 附加到指定的进程。
-n <probe>: 指定要监控的探针。
-s <script>: 运行指定的脚本。
示例
dtrace -p 1234
dtrace -n syscall::entry
使用场景
- 性能分析和调优。
- 复杂问题的调试,特别是在动态库和内核之间。
总结
这四个命令各有特点,适用于不同的调试和分析任务:
strace
: 主要用于系统调用和信号的监控。ltrace
: 侧重于动态库函数调用的跟踪。ftrace
: 强调内核级别的函数调用分析。dtrace
: 动态追踪,适用于复杂的调试需求。