strace、ltrace、ftrace 和 dtrace

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 权限。
常用操作
  1. 启用跟踪:

    • 通过写入文件来启用特定的跟踪功能

      bash 复制代码
      echo function > /sys/kernel/debug/tracing/current_tracer 

2.查看情况

bash 复制代码
cat /sys/kernel/debug/tracing/trace 
  1. 禁用跟踪:
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: 动态追踪,适用于复杂的调试需求。
相关推荐
青梅味猪大肠16 小时前
【操作系统-60】临近适应算法
java·linux·开发语言·嵌入式硬件·算法·操作系统
CoderYanger16 小时前
Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)
java·数据库·spring·面试·职场和发展·java-ee·mybatis
沫璃染墨16 小时前
从零入门计算机网络系列(十四):TCP报文与字节流本质——从数据封装到报文边界
linux·服务器·网络·网络协议·tcp/ip·tcp
XLYcmy16 小时前
信息检索报告数字经济赋能城市低碳治理的路径研究——基于“传统数据库 + 生成式人工智能”双轮驱动的检索实践 检索实施与结果分析 Web of Science
数据库·ai·llm·prompt·ssci·deepseek·wos
Decay__16 小时前
21_MySQL 优化案例集 —— 慢 SQL 优化、索引重构与参数调整收益对比
运维·数据库·sql·mysql·架构
CodeYp201917 小时前
第19讲:自旋锁
linux·自旋锁
此生决int17 小时前
Linux系列(08)——进程控制
linux·运维·驱动开发
codigger17 小时前
MySQL 深分页优化:limit 100000, 10 慢在哪,怎么救
数据库·sql·mysql·程序员
麦壳饼17 小时前
SonnetDB 5.0 正式发布:增强 SQL 与事务,开放九模型 MCP 读写
数据库·人工智能·sql·sonnetdb
Percep_gan17 小时前
Linux中安装gitea,很详细
linux·elasticsearch·gitea