news 2026/9/3 3:44:08

常用的底层调试用的不容易记住的命令整理(持续更新)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
常用的底层调试用的不容易记住的命令整理(持续更新)

一、背景

底层调试过程中,有不少好用但是由于也不是那么常用或者用得不少次数但是参数过多不方便形成长期记忆,而要每次用每次都要从弹药库里翻找,造成了时间上的浪费。这里做一些不同场景下调试性能稳定性问题会用到的一些常用的不容易记住的命令,方便后面查找。

二、objdump出某个内核函数对应的elf

在不开内核地址随机化的系统上,可以先到编译生成目录里去找符号对应的映射的文件System.map,比如如下图,从System.map里找到我们要看的下图里的do_exit的offset是0xec的内核代码的位置是在做什么:

从System.map里找到do_exit函数,如下图的地址:

如上图,do_exit函数的起始地址是ffff80000809af80,结束地址是ffff80000809b920。

然后,再通过下面的命令objdump去解析出对应函数的elf文件:

aarch64-linux-gnu-objdump -S vmlinux --start-address=0xffff80000809af80 --stop-address=0xffff80000809b920 > vmlinux_do_exit.txt

三、ps命令,查看指定进程的各个线程的运行情况

如下命令可以抓取指定进程的里面所有线程的线程id、线程名、实时优先级、nice值、上一次运行所在的cpu、线程的cpu平均使用率、如果是陷入内核的系统调用的函数名,这些基础的信息:

ps -L -o pid,tid,comm,rtprio,nice,psr,%cpu,state,stat,wchan -p 75437

自行替换上面命令里的-p后面的进程id的数字。

3.1 如果是搜索所有进程

如果是搜索全局范围的线程,则上面的命名的后面-p <pid>的筛选就不需要了,另外,需要带上-e,即:

ps -L -eo pid,tid,comm,rtprio,nice,psr,%cpu,state,stat,wchan

四、grep命令、sort命令的使用、watch命令

4.1 grep带-E,结合正则表达式如.+及-B,-A参数及-v参数

grep命令我用得非常多,常用的参数是-E表示使用正则表达式,正则表达式里.*表示任意个字符包括0个字符,这个可能很多人都知道,而.+这个可能用的人不多,但是有时候非常有用,比如要表示一对[]里有字符,那么用grep来实现搜索遍历出带有[]且[]里有字符的行,并显示这一行临近的前3行,后5行的内容的脚本:

grep -B3 -A5 -E "\[.+\]"

上面的B表示before,A表示after,.+表示有字符(不是空),注意,[和]都是特殊字符,需要在前面加\。

如果要取反的匹配,则带上-v参数即可,如要剔除掉所有包含[]且[]里有字符的所有的行,过滤出剩下的行,如下命令:

grep -B3 -A5 -vE "\[.+\]"

另外,正则表达式可以使用括号来与|来进行配合()包裹了一段正则表达式,这样可以结合|来使用,比如匹配开头是abc或者cde,结尾是123或者234的行:

temp.txt的内容:

abc abc 222 456 123 abc dsfdsfsfsd 234 cde dfdfd 123 333 cde 123 555


使用下面的命令:

cat temp.txt | grep -E "^(abc|cde).*(123|234)$"

输出结果:

.*表示任意字符串可以是空,^表示开头,$表示结尾

4.2 sort命令,-k1 -nr及自定义分隔符结合head和tail命令

常用的sort用k加一个数字,比如1表示第一个段落(默认的分割符是空格或制表符),但是可以设置自定义的分割符。-n表示用数字来理解段落来进行排序,-r表示由大的数字到小的数字进行排序。

如搜索系统里所有的线程的实时优先级按照由高到低排序,显示前10个:

ps -L -eo "rtprio,pid,tid,comm" | sort -k1 -nr | head -n 10

tail也是可以用-n 行数这么来显示,另外,tail -f可以用来读取持续变大的文件。

sort命令指定自定义的分割符,比如指定[]分隔符,过滤出下面的temp.txt里的最后一个数字,再进行排序的命令:

temp.txt的内容:

[3][Dexceed] cpu[14]desc[Dexceed]dtimens[22550600] [4][Dexceed] cpu[4]desc[Dexceed]dtimens[42391850] [5][Dexceed] cpu[8]desc[Dexceed]dtimens[22864425]

命令:

sort -t '[' -k6,6nr temp.txt

排序后的结果:

因为指定了[作为分隔符,找到了第6个字段就是最后包含]的这个字段,因为用了-n所以识别成数字,也就把后面的]给过滤掉了,所以就可以按数字排序了。

4.3 watch命令

watch命令太有用了,我经常用它来持续观察一些感兴趣的状态,watch可以设置的最小间隔是0.1秒,也是足够可以观察到一些细节变化了。

watch -n 0.1之后,后面的命令不能tab出来,所以我一般是先把后面的命令tab联想敲完之后,再前后补一个""后,再加watch -n 0.1在开头。

五、du命令、wc命令、truncate命令

du -sh可能大家知道得比较多,但是是看不到隐藏文件的,之前一篇博客讲到了一个vscode的占很大的空间的问题 vscode的缓存文件夹及查看进程读写的文件,看隐藏文件得用下面的命令:

du -sh ./* .[^.]* | sort -hr

这里再做一下记录。

wc命令我用得比较多的就是wc -l来查看行数,常用于搜索出来的内容看有多少行,再用别的匹配方式来去搜索看搜索出来是多少行,这么去比较看是否一致或者有大小关系,来推断一些如调用栈是否调用函数A的调用者是否都是函数B。

wc还可以带-m去数字符数,-c去数字节数

truncate命令主要有两种用途,一种是扩大文件,先固定占住一定的磁盘空间,一种是裁剪掉一些系统上的日志文件来节省空间。用truncate来去裁剪日志文件,日志文件还在,不影响日志的继续存储。

truncate改变文件大小的命令:

truncate -s 0 temp.txt

效果如下:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 21:31:54

元宇宙场景构建:GLM-4.6V-Flash-WEB理解用户上传素材语义

元宇宙场景构建&#xff1a;GLM-4.6V-Flash-WEB理解用户上传素材语义 在元宇宙内容爆发的今天&#xff0c;每天都有成千上万的用户上传截图、设计图、角色形象和虚拟空间布局。这些图像不仅仅是像素的堆叠&#xff0c;更承载着创作者的意图、风格偏好甚至社交诉求。然而&#x…

作者头像 李华
网站建设 2026/9/2 21:23:26

NPM从入门到精通:小白必看的20个常用命令图解

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个交互式NPM学习应用&#xff0c;包含&#xff1a;1. 命令行模拟器 2. 可视化命令执行过程 3. 20个常用命令的逐步教程 4. 实时错误诊断 5. 练习模式 6. 成就系统 7. 知识测…

作者头像 李华
网站建设 2026/9/2 23:53:48

3分钟搞定Docker Desktop:比传统安装快10倍的技巧

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个Docker Desktop极速安装工具&#xff0c;功能包括&#xff1a;1. 预下载所有依赖包 2. 静默安装模式 3. 配置优化模板 4. 安装耗时统计与对比 5. 常见错误预防机制。支持生…

作者头像 李华
网站建设 2026/9/2 21:24:14

食品营养标签读取:GLM-4.6V-Flash-WEB生成饮食建议

食品营养标签读取&#xff1a;GLM-4.6V-Flash-WEB生成饮食建议 在超市货架前&#xff0c;你拿起一包薯片&#xff0c;翻到背面——密密麻麻的“每份含量”“NRV%”“反式脂肪酸”让人望而却步。普通人真的能看懂这些数字背后的健康含义吗&#xff1f;更进一步说&#xff0c;我们…

作者头像 李华
网站建设 2026/9/2 20:36:26

Keil4安装路径选择技巧:新手指南

Keil4安装路径避坑指南&#xff1a;为什么你的编译器总报“cannot execute ‘armcc’”&#xff1f; 你有没有遇到过这样的情况——刚装完Keil4&#xff0c;信心满满地新建一个STM32工程&#xff0c;点击“Build”&#xff0c;结果编译窗口弹出一行红字&#xff1a; Error: c…

作者头像 李华
网站建设 2026/9/2 21:23:30

自动售货机界面适老化改造:GLM-4.6V-Flash-WEB语音引导操作

自动售货机界面适老化改造&#xff1a;GLM-4.6V-Flash-WEB语音引导操作 在城市街头&#xff0c;自动售货机早已成为人们日常生活中再普通不过的存在。但对许多老年人来说&#xff0c;那块闪亮的触控屏却像一道无形的墙——字太小、图标看不懂、流程复杂&#xff0c;稍有不慎还可…

作者头像 李华