strace、ltrace、truss作用

1.了解一个程序的工作原理(可以了解Linux下很多常用的命令实现的原理);

2.帮助定位程序中的问题(在开发工作时帮助定位问题);

strace

strace(strace - trace system calls and signals)能够跟踪进程使用的系统调用,并显示其内容。因此,当遇到调试不明的故障时,首先使用strace找出系统调用中出错的地方,通常能得到故障发生的线索,特别是与文件有关的错误、参数错误等。使用strace能够有效地发现系统调用失败有关的故障,但无法发现用户写出的程序或共享库中发生的错误。strace 命令是一种强大的工具,它能够显示所有由用户空间程序发出的系统调用。跟踪程序的每个系统调用strace 显示这些调用的参数并返回符号形式的值。strace 从内核接收信息,而且不需要以任何特殊的方式来构建内核。

-i  找到地址方便GDB详细调试。给strace添加 -i 选项即可显示程序在哪个地址进行了系统调用,可以将该地址作为断点使用,然后使用GDB进一步定位问题。

ltrace

ltrace能够跟踪进程的库函数调用

truss

truss和strace命令达成的效果是基本一致的。truss和strace用来跟踪一个进程的系统调用或信号产生的情

strace ltrace区别

strace —— Trace system calls and signals (跟踪一个进程的系统调用或信号产生的情况)

ltrace —— A library call tracer (跟踪进程调用库函数的情况)

ltrace与strace都可以指定PID,即对运行中的程序进行跟踪.

ltrace与strace都可以跟踪程序fork或clone子进程.

ltrace是用-f参数,而strace是用-f(fork/clone)和-F(vfork)

ltrace -p PID与strace -p PID

strace、ltrace、truss共用参数

-f -F选项告诉strace同时跟踪fork和vfork出来的进程。除了可以跟踪当前进程,还可以跟踪其子进程。

-o file 将输出信息写到文件file中,而不是显示到标准错误输出(stderr)。

-e execve 只记录 execve 这类系统调用

-p pid :绑定到一个由pid对应的正在运行的进程。此参数常用来调试后台进程。

strace、ltrace、truss命令使用示例

truss -o ls.truss ls -al: 跟踪ls -al的运行,将输出信息写到文件/tmp/ls.truss中。
strace -f -o vim.strace vim: 跟踪vim及其子进程的运行,将输出信息写到文件vim.strace。
ltrace -p 234: 跟踪一个pid为234的已经在运行的进程。

linux truss strace ltrace 对比 诊断调试程序相关推荐

  1. linux的strace命令

    linux的strace命令 strace 命令是一种强大的工具,它能够显示所有由用户空间程序发出的系统调用. strace 显示这些调用的参数并返回符号形式的值.strace 从内核接收信息,而且不 ...

  2. linux的strace命令(详解)

    linux的strace命令(详解) 本文详细讲述linux下的strace命令的用法. strace 命令是一种强大的工具,它能够显示所有由用户空间程序发出的系统调用. strace 显示这些调用的 ...

  3. Linux 下 strace 命令用法总结

    Linux 下 strace 命令用法总结 1 功能说明 strace 命令是一种强大的工具, 能够显示任何由用户空间程式发出的系统调用. strace 显示这些调用的参数并返回符号形式的值. str ...

  4. 高压缩比 压缩软件 linux,Linux下压缩软件对比

    Linux下压缩软件对比 发布时间:2007-02-15 00:44:03来源:红联作者:seais 最近在做系统备传输时发现压缩时间过常,于是简单做了一下Linux下的压缩软件的测试 源文件3591 ...

  5. DOS 和 Linux 常用命令的对比

    此为转载文章,转自:http://www.huihoo.org/gnu_linux/ch-doslinux.html Red Hat Linux 9: Red Hat Linux 入门指南 后退 前进 ...

  6. 转]Window, Linux动态链接库的分析对比

    转]Window, Linux动态链接库的分析对比 摘 要:动态链接库技术实现和设计程序常用的技术,在Windows和Linux系统中都有动态库的概念,采用动态库可以有效的减少程序大小,节省空间,提高 ...

  7. Linux系统下区别对比(~、/home与/root)

    Linux系统下区别对比(~./home与/root) Linux下~./home与/root的区别: 1.在root用户下,~等同于/root 2.在普通用户下,~等同于/home/当前的普通用户名 ...

  8. linux版本和特点,Linux与其他系统对比,具有哪些特点?

    无论工作还是学习,我们必然会接触到操作系统,而且现在操作系统发展成熟.稳定,种类也有很多,其中包含Windows.Linux.Unix等,Windows不用多说想必大家都很熟悉,Linux与Unix类 ...

  9. gui与windows和linux但关系,从程序员的角度看Linux和windows的对比

    ,~/vsZ.{ `5J0S LUPA开源社区#fjY*Lj$U5GYRBcc 本人在Unix SYS5,DOS,Windows3.x,windows9.x/NT 和Linux几个不同时期流行的OS上 ...

最新文章

  1. CLR Profiler 性能分析工具 (转)
  2. 软件测试(一):概念篇
  3. Android-处理EditText中的“ Enter”
  4. 生鲜在卖场中的六大类别
  5. 渐进式遗传组卷算法(大规模题库,实际可用的算法) 智能组卷系统
  6. RPAD()和LPAD()函数进行字符串的填充
  7. 【AWSL】之Linux常用命令,学习Linux,这一篇就够了(type、echo、enable、du、ls、mkdir、touch、ln、cp、rm、mv、find、gzip、bzip、tar)
  8. mysql视图表怎么设置约束_MySQL一一sql的视图、索引、约束
  9. mpvue 微信小程序 显示 转发按钮
  10. jeecmsv9导入mysql详细步骤_jeecms v9.3数据库导入
  11. Fortinet不断践行安全平台的战略保持长效增长
  12. 动易 dw css不对,动易2019后台管理编辑器后台无法插入任何东西..._网络编辑_帮考网...
  13. PyQt5教程——组件(7)
  14. zabbix4.2之web监控
  15. 20.高性能MySQL --- 在MySQL上使用 Sphinx
  16. 谈朋友圈——周围的朋友们
  17. 粒子群算法几个适应度评价函数
  18. 如何清除计算机开机密码,电脑开机密码忘了怎么办?教你用PE工具清除开机密码...
  19. 视频画中画效果制作,原来这么简单就可以做出
  20. ps导出内容快捷键 快速导出png

热门文章

  1. Libvirt — 4 种主机虚拟化网络模式
  2. 5G 标准 — R18
  3. Kubernetes — Flannel CNI
  4. Go 语言编程 — 高级数据类型 — 数组
  5. Octavia Rocky UDP 负载均衡功能试验
  6. Windows7自动安装驱动功能关闭与开启教程
  7. NR 5G SDAP业务数据适配协议
  8. [ Nowcoder Contest 165 #D ] 合法括号序列
  9. WIKI 开发工具网站收藏
  10. linux学习笔记十(Raid基本知识)