0%

Linux基础复学(6)- 调试手段二

前言

继续了解一些linux开发使用到的调试手段:

  • devmem: 可以在终端直接查看或者修改设备寄存器的值
  • top: 用于实时运行系统的监控,包括Linux内核管理的进程或者线程的资源占用情况

devmem

编译内核的时候,需要开启CONFIG_DEVMEM, 可以在终端查看寄存器值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 需要安装相应的软件包 apt install devmem2
man devmem2

NAME
devmem2 - simple program to read/write from/to any location in memory

SYNOPSIS
devmem2 address [type [data]]


root@keep-Inspiron-3020-S:/home/keep/code/linux-6.6# devmem2 00100000 w
/dev/mem opened.
Memory mapped at address 0x7293b923b000.
Value at address 0x8000 (0x7293b923b000): 0xBBC0BBC


top

简介

top命令可以查看系统实时进程状态,显示内核管理的所有进程和线程的概要信息。

top命令显示分为3个区域: 概要区域,列表头,任务区域。另外在概要区域和列表头中间还有一个输入行,通过输入相关快捷键会触发该行的输入(比如g:切换任务域2的显示模式)

top_view

参数选项

top命令使用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
top -hv|-bcEeHiOSs1 -d secs -n max -u|U user -p pids -o field -w [cols]

-h | -v: 帮助或者版本信息

-b 批量模式,用于将输出存到一个文件,不能交互

-c 显示完整执行命令路径

-d 指定更新时间间隔, 可以通过快捷键d/s运行时修改间隔

-e 指定任务域内存容量单位 k - kB, m-MB, g-GB, t-TB, p-PB, 可以通过快捷键e 调整

-E 指定概要区域内存容量单位 k - kB, m-MB, g-GB, t-TB, p-PB, 可以通过快捷键E 调整

-H 用于指示 top 显示每个进程中的各个线程,而不是默认的将同一进程中的所有线程合并显示,可以通过快捷键H调整

-i 忽略自上次更新以来没有占用CPU的项目

-n 指定显示的最大行数

-o 指定排序的字段 -o +%MEM 按内存从高到低排序, -o -%MEM从低到高排序

-O 输出所有字段名

-p 只显示指定id的进程

...

区域介绍

概要区域:

第1行显示uptime, load averates : 程序名称/当前时间/启动以来的时长/当前登陆系统的用户数/过去1,5,15分钟的CPU平均负载

第2行显示总的任务数,以及处于每个状态的任务数

第3行显示自上次更新以来CPU的百分比状态

  • us 没有设置优先级的用户进程,一般默认没有设置
  • sy 系统内核进程
  • ni 设置了优先级的用户进程
  • id 空闲
  • wa 等待IO
  • hi 硬件中断
  • si 软件中断
  • st 虚拟机占用的时间

第4行显示物理内存占用情况
第5行显示虚拟内存占用情况

表头区域

可以通过快捷键f/F来控制显示的顺序及是否显示。

  • %CPU CPU使用率 自上次更新以来占用的CPU时间百分比,支持SMP时,如果一个进程包含多个线程,那么这个使用率可能超过100%。
  • %MEM 一个任务当前占用的物理内存的份额
  • GII 组ID
  • GROUP 组名

还有许多交互命令可以控制top的显示配置。

top_ic


行动,才不会被动!

欢迎关注个人公众号 微信 -> 搜索 -> fishmwei,沟通交流。

欢迎关注

博客地址: https://fishmwei.github.io

掘金主页: https://juejin.cn/user/2084329776486919