更新升级 专属应用 系统故障 硬件故障 电脑汽车 鸿蒙刷机 鸿蒙开发Linux教程 鸿蒙开发Linux命令
当前位置:HMXT之家 > 鸿蒙开发Linux命令 > Linux ltrace、lsusb、lsscsi、lvdisplay命令的用法及解释

Linux ltrace、lsusb、lsscsi、lvdisplay命令的用法及解释

更新时间:2022-01-21 14:52:05浏览次数:973+次

以下为你详细解释ltrace、lsusb、lsscsi、lvdisplay命令的用法。

\

Linux ltrace命令的用法及解释

Linux ltrace命令是用来跟踪进程调用库函数的情况。

1、语法

ltrace [option ...] [command [arg ...]]

2、选项

-a 对齐具体某个列的返回值。

-c 计算时间和调用,并在程序退出时打印摘要。

-C 解码低级别名称(内核级)为用户级名称。

-d 打印调试信息。

-e 改变跟踪的事件。

-f 跟踪子进程。

-h 打印帮助信息。

-i 打印指令指针,当库调用时。

-l 只打印某个库中的调用。

-L 不打印库调用。

-n, --indent=NR 对每个调用级别嵌套以NR个空格进行缩进输出。

-o, --output=file 把输出定向到文件。

-p PID 附着在值为PID的进程号上进行ltrace。

-r 打印相对时间戳。

-s STRLEN 设置打印的字符串最大长度。

-S 显示系统调用。

-t, -tt, -ttt 打印绝对时间戳。

-T 输出每个调用过程的时间开销。

-u USERNAME 使用某个用户id或组ID来运行命令。

-V, --version 打印版本信息,然后退出。

-x NAME treat the global NAME like a library subroutine.(求翻译)

3、实例

最基本应用,不带任何参数:

[guest@localhost tmp]$ ltrace ./a.out

__libc_start_main(0x80484aa, 1, 0xbfc07744, 0x8048550, 0x8048540 <unfinished ...>

printf("no1:%d \t no2:%d \t diff:%d\n", 10, 6, 4no1:10 no2:6 diff:4 ) = 24

printf("no1:%d \t no2:%d \t diff:%d\n", 9, 7, 2no1:9 no2:7 diff:2 ) = 23

printf("no1:%d \t no2:%d \t diff:%d\n", 8, 8, 0no1:8 no2:8 diff:0 ) = 23

--- SIGFPE (Floating point exception) ---

+++ killed by SIGFPE +++

输出调用时间开销:

[guest@localhost tmp]$ ltrace -T ./a.out

__libc_start_main(0x80484aa, 1, 0xbf81d394, 0x8048550, 0x8048540 <unfinished ...>

printf("no1:%d \t no2:%d \t diff:%d\n", 10, 6, 4no1:10 no2:6 diff:4 ) = 24 <0.000972>

printf("no1:%d \t no2:%d \t diff:%d\n", 9, 7, 2no1:9 no2:7 diff:2 ) = 23 <0.000155>

printf("no1:%d \t no2:%d \t diff:%d\n", 8, 8, 0no1:8 no2:8 diff:0 ) = 23 <0.000153>

--- SIGFPE (Floating point exception) ---

+++ killed by SIGFPE +++

显示系统调用:

[guest@localhost tmp]$ ltrace -S ./a.out

SYS_brk(NULL) = 0x9e20000

SYS_access(0xa4710f, 4, 0xa4afc0, 0, 0xa4b644) = 0

SYS_open("/etc/ld.so.preload", 0, 02) = 3

SYS_fstat64(3, 0xbfbd7a94, 0xa4afc0, -1, 3) = 0

SYS_mmap2(0, 17, 3, 2, 3) = 0xb7f2a000

SYS_close(3) = 0

SYS_open("/lib/libcwait.so", 0, 00) = 3

SYS_read(3, "\177ELF\001\001\001", 512) = 512

SYS_fstat64(3, 0xbfbd76fc, 0xa4afc0, 4, 0xa4b658) = 0

SYS_mmap2(0, 4096, 3, 34, -1) = 0xb7f29000

SYS_mmap2(0, 5544, 5, 2050, 3) = 0x423000

SYS_mmap2(0x424000, 4096, 3, 2066, 3) = 0x424000

.............省去若干行

Linux lsusb命令的用法及解释

Linux lsusb命令用于显示本机的USB设备列表,以及USB设备的详细信息。

lsusb命令是一个学习USB驱动开发,认识USB设备的助手,推荐大家使用,如果您的开发板中或者产品中没有lsusb命令可以自己移植一个,放到文件系统里面。

1、语法

lsusb(选项)

2、选项

-v:显示USB设备的详细信息;

-s<总线:设备号>仅显示指定的总线和(或)设备号的设备;

-d<厂商:产品>:仅显示指定厂商和产品编号的设备;

-t:以树状结构显示无理USB设备的层次;

-V:显示命令的版本信息。

3、实例

插入usb鼠标后执行lsusb的输出内容如下:

Bus 005 Device 001: id 0000:0000

Bus 001 Device 001: ID 0000:0000

Bus 004 Device 001: ID 0000:0000

Bus 003 Device 001: ID 0000:0000

Bus 002 Device 006: ID 15d9:0a37

Bus 002 Device 001: ID 0000:0000

解释:

Bus 005

表示第五个usb主控制器(机器上总共有5个usb主控制器 -- 可以通过命令lspci | grep USB查看)

Device 006

表示系统给usb鼠标分配的设备号(devnum),同时也可以看到该鼠标是插入到了第二个usb主控制器

006        usb_device.devnum

/sys/devices/pci0000:00/0000:00:1d.1/usb2/2-2/devnum

ID 15d9:0a37

表示usb设备的ID(这个ID由芯片制造商设置,可以唯一表示该设备)

15d9    usb_device_descriptor.idVendor

0a37    usb_device_descriptor.idProduct

/sys/devices/pci0000:00/0000:00:1d.1/usb2/2-2/idVendor

Bus 002 Device 006: ID 15d9:0a37

Bus 002 Device 001: ID 0000:0000

表示002号usb主控制器上接入了两个设备:

一个是usb根Hub -- 001

一个是usb鼠标  -- 006

Linux lsscsi命令的用法及解释

1、Linux lsscsi命令参数

-s 显示容量大小。

-c 用全称显示默认的信息。

-d 显示设备主,次设备号。

-g 显示对应的sg设备名。

-H 显示主机控制器列表,-Hl,-Hlv。

-l 显示相关属性,-ll,-lll=-L。

-v 显示设备属性所在目录。

-x 以16进制显示lun号。

-p 输出DIF,DIX 保护类型。

-P 输出有效的保护模式信息。

-i 显示udev相关的属性

-w 显示WWN

2、实例

[root@localhost zhangying]# lsscsi

[0:0:0:0]    disk    ATA      ST500DM002-1BD14 KC47  /dev/sda 

[5:0:0:0]    cd/dvd  HL-DT-ST DVD+-RW GHB0N    A100  /dev/sr0

Linux lvdisplay命令的用法及解释

Linux lvdisplay命令用于显示LVM逻辑卷空间大小、读写状态和快照信息等属性。如果省略"逻辑卷"参数,则lvdisplay命令显示所有的逻辑卷属性。否则,仅显示指定的逻辑卷属性。

1、语法

lvdisplay(参数)

2、参数

逻辑卷:指定要显示属性的逻辑卷对应的设备文件。

3、实例

使用lvdisplay命令显示指定逻辑卷的属性。在命令行中输入下面的命令:

[root@localhost ~]# lvdisplay /dev/vg1000/lvol0     #显示逻辑卷属性

输出信息如下:

--- Logical volume ---

LV Name                /dev/vg1000/lvol0

......省略部分输出内容......

Block device           253:0