zoukankan      html  css  js  c++  java
  • strace命令

    1.strace简介

    strace常用来跟踪进程执行时系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。

    2.编译、安装strace

    首先需要以下两个文件:

    strace-4.5.15.tar.bz2
    strace-fix-arm-bad-syscall.patch

    //1.解压
    #tar -xjf strace-4.5.15.tar.bz2
    #cd strace-4.5.15/
    //2.打补丁 #patch -p1 <../strace-fix-arm-bad-syscall.patch //-p1:表示从补丁文件中把第一个斜杠之前的东西去掉 // '<':指定补丁文件的位置
    //3.配置 #./configure --host=arm-linux CC=arm-linux-gcc //配置configure //4.编译 #make //生成strace命令文件

    将生成的strace拷贝到开发板上对应的目录就可以了

    3.strace的使用

    常用参数如下所示:

    -o 指定跟踪信息的输出文件
    -t 记录跟踪信息的时间,以S为单位
    -tt 记录跟踪信息的时间,以uS为单位

    3.1 卸载first_drv时出错

    insmod first_drv.ko

    rmmod  first_drv

    rmmod: chdir(/lib/modules) : No such file or directory

    此时可以利用strace命令来跟踪一下:

    strace -o  log.txt  rmmod  first_drv

    打开log.txt,你会看到这样的一句话:

    chdir(/lib/modules) = -1  ENOENT(No such file or directory)。说明没有/lib/modules目录

    此时需要创建 /lib/modules目录

    3.2 通过strace来测试led_text应用程序

    insmod led.ko

    strace  -o log.txt  ./led_text led1 on 

     4. strace 原理介绍

    stace是一个父进程,它会创建一个子进程,这个子进程会执行rmmod  first_drv这个命令。

    strace -o  log.txt   app

    在应用程序中调用c库函数,如open 、read、write时。注意这些库函数不是我们自己实现的,是在C库中实现的。
    比如在应用程序中调用open时,最终会调用swi那条指令加上某个值,即swi #val1
    比如在应用程序中调用read时,最终会调用swi那条指令加上某个值,即swi #val2
    比如在应用程序中调用write时,最终会调用swi那条指令加上某个值,即swi #val3
    swi指令会导致系统发生一个swi异常,就会进入到内核态,从而就会调用sys_open、sys_read、sys_write等系统函数
    在swi异常处理函数vector_swi中先判断一下APP子进程是否被父进程跟踪,如果被跟踪,应用程序会给父进程发一个信号。父进程就将其记录下来,然后让APP继续执行。

    注意:Open在内核里面的入口函数时sys_open

    本文比较简单的介绍了strace的基本使用方式

  • 相关阅读:
    hibernate_0100_HelloWorld
    MYSQL子查询的五种形式
    JSF是什么?它与Struts是什么关系?
    nop指令的作用
    htmlparser实现从网页上抓取数据(收集)
    The Struts dispatcher cannot be found. This is usually caused by using Struts tags without the associated filter. Struts tags are only usable when the
    FCKeditor 在JSP上的完全安装
    Java遍历文件夹的2种方法
    充电电池和充电时间说明
    吃知了有什么好处
  • 原文地址:https://www.cnblogs.com/-glb/p/12592612.html
Copyright © 2011-2022 走看看