java strace_用strace排查故障的5种简单方法(每日一译)

本文介绍了如何利用strace工具跟踪系统调用来排查Java程序的问题,包括查看程序读取的配置文件、诊断文件打开问题、监控进程状态、统计调用时间和连接服务器故障的排查方法。
摘要由CSDN通过智能技术生成

我很意外大部分人都不知道如何使用strace。strace一直是我的首选debug工具,因为它非常的有效,很多问题都能够用它进行排查。

strace是什么?

Strace是一个用来跟踪系统调用的简易工具。它最简单的用途就是跟踪一个程序整个生命周期里所有的系统调用,并把调用参数和返回值以文本的方式输出。

当然它还可以做更多的事情:

strace可以过筛选出特定的系统调用。

strace可以记录系统调用的次数,时间,成功和失败的次数。

strace可以跟踪发给进程的信号。

strace可以通过pid附加到任何正在运行的进程上。

strace类似其他Unix系统上的truss,或者Sun's Dtrace

使用教程

以下这些只是些皮毛的用法:

1)查看初始化时程序读取的配置文件

你是否遇到过程序去错误的位置读取配置文件的情况?

简单的排查方式:

$ strace php 2>&1 | grep php.ini

open("/usr/local/bin/php.ini", O_RDONLY) = -1 ENOENT (No such file or directory)

open("/usr/local/lib/php.ini", O_RDONLY) = 4

lstat64("/usr/local/lib/php.ini", {st_mode=S_IFLNK|0777, st_size=27, ...}) = 0

readlink("/usr/local/lib/php.ini", "/usr/local/Zend/etc/php.ini", 4096) = 27

lstat64("/usr/local/Zend/etc/php.ini", {st_mode=S_IFREG|0664, st_size=40971, ...}) = 0

So this version of PHP reads php.ini from /usr/local/lib/php.ini (but it tries /usr/local/bin first).

如果只关心特定的系统调用可以使用以下略微复杂的使用方法:

$ strace -e open php 2>&1 | grep php.ini

open("/usr/local/bin/php.ini", O_RDONLY) = -1 ENOENT (No such file or directory)

open("/usr/local/lib/php.ini", O_RDONLY) = 4

如果安装多个版本的程序库,想搞清楚自己的程序加载的是哪个也可以如法炮制~。

2)为什么程序打不开这个文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值