JAVA(21)-centos-strace

本文介绍了如何在Linux环境下使用strace工具追踪BIO(Blocking I/O)程序的系统调用。通过示例Java程序SocketBIO,展示了如何编译并运行程序,然后使用strace进行跟踪,输出到特定的日志文件中。同时,解释了如何通过观察进程和线程的状态,理解内核如何处理BIO操作。此外,还提到了如何查看网络连接状态和进程详细信息来辅助分析。
摘要由CSDN通过智能技术生成

如何在linux下追踪BIO程序。linux是一个文件系统,系统内核的运行会以文件的形式存储,我们可以通过文件系统来查看。
1.BIO程序
2.追踪这个程序,看内核是怎么处理这个进程的。
 


1.BIO程序

public class SocketBIO {

    public static void main(String[] args) throws IOException {
        ServerSocket server=new ServerSocket(9090);//1599
        System.out.println("step1:new ServerSocket(9090)");
        while(true)
        {
            final Socket client=server.accept();//阻塞
            System.out.println("step2:client\t"+client.getPort());

            new Thread(new Runnable()//PID 1676
            {
                public void run() {
                    InputStream in = null;
                    try {
                        in = client.getInputStream();
                        BufferedReader reader = new BufferedReader(new InputStreamReader(in));
                        while (true)
                        {
                            String dataline = reader.readLine();
                            if (null != dataline)
                            {
                                System.out.println(dataline);
                            } else
                              {
                                client.close();
                            }
                        }
                } catch (IOException e) 
                    {
                e.printStackTrace();
            }
                }});
     }
  }
}

2.运行并追踪这个程序
    

# 运行这个JAVA文件
/usr/java/j2sdk1.4.2_19/bin/javac SocketBIO

strace -ff -o out /usr/java/j2sdk1.4.2_19/bin/javac SocketBIO 
#1.追踪    strace  追踪线程是否使用内核的系统调用 
#-ff       追踪每个线程
#-O out    追踪的日志输出
#SocketBIO 类名

3.自定义输出文件
   .out1599 是
     
   new Thread 后是out.1676
    

4.系统输出文件

查看整个进程:netstat -natp
#操作系统运行时展开的一个目录
jps
cd /proc/
ls 
cd 1599
ls
cd task
ll
cd fd 
#出来的是线程
#0 输入,1 输出,2 报错,3 server,5 客户端


   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值