查看系统调用与信号

有时候在没有源代码的情况下,我却想知道一个程序做了哪些系统调用及调用了哪些动态库,这时候该怎么办呢?

没事,Linux系统提供了众多了跟踪工具,可以让我们在没有源代码的情况下跟踪程序都执行了哪些系统调用、动态库调用及接收信号,让我们在不停止程序来观察程序的执行流程。

strace 显示执行程序的系统调用及接收信号情况;

strace [strace 选项]  可执行程序 可执行程序参数。

选项说明:

-o filename 将输出写到文件filename中;

-f 跟踪子进程的执行,适合多线程程序;

-ff 如果使用了-o指定输出文件,则将每个子进程都写入到filename.pid中;

-s strsize,指定最大字串大小,默认为32;

-r  打印相对时间戳;

-t  打印实际时间 -tt 打印毫秒级 -ttt 打印微秒级时间;

-x 将所有非ASCII字符串显示为十六进制字串;

-xx 将所有字符串显示为十六进制;

-P pid 附着于进程进行跟踪,并在ctrl+c后离开保持被跟踪程序执行。

-e key=[!]value[,value]或-evalue,只显示value的系统调用;

key包括trace、abbrev、verbose、raw、signal、read、write,value为系统调用的符号。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值