news 2026/6/9 21:07:15

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

作者头像

张小明

前端开发工程师

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/6/6 4:26:10

一文说清CCS如何烧录程序到TMS320C2000芯片

从零开始搞懂CCS烧录TMS320C2000&#xff1a;不只是点“Load Program”那么简单你有没有遇到过这样的场景&#xff1f;代码写完、编译通过&#xff0c;信心满满地点击“Load Program”&#xff0c;结果弹出一串红字&#xff1a;“Failed to Connect to Target”。重启电脑、换线…

作者头像 李华
网站建设 2026/6/9 19:43:30

YOLOv8在智慧城市中的5个创新应用案例

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个基于YOLOv8的智慧城市监控系统原型&#xff0c;要求能够同时处理多个视频流&#xff0c;检测以下目标&#xff1a;1. 车辆&#xff08;分类为汽车、卡车、摩托车等&#x…

作者头像 李华
网站建设 2026/6/6 6:18:50

ATKKPING解析:AI如何优化网络性能测试

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个基于AI的ATKKPING网络性能测试工具&#xff0c;能够自动分析网络延迟、丢包率等指标&#xff0c;并提供优化建议。工具应支持多节点测试、实时数据可视化&#xff0c;并能…

作者头像 李华
网站建设 2026/6/6 10:23:25

智能家居厂商探索GLM-4.6V-Flash-WEB在家庭监控语义分析中的应用

智能家居厂商探索GLM-4.6V-Flash-WEB在家庭监控语义分析中的应用 在越来越多家庭开始部署智能摄像头的今天&#xff0c;一个现实问题摆在了厂商面前&#xff1a;用户真的会花时间回看长达数小时的录像吗&#xff1f;当App推送一条“客厅检测到移动”通知时&#xff0c;大多数人…

作者头像 李华
网站建设 2026/6/9 18:36:42

5个PLAINTEXT转图片的实际应用场景

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个展示PLAINTEXT转图片实际应用的演示项目&#xff0c;包含&#xff1a;1. 社交媒体海报生成器 2. 电商产品说明图生成 3. 教学课件插图自动生成 4. 数据可视化图表转换 5. …

作者头像 李华
网站建设 2026/6/9 19:47:54

SCP命令效率翻倍:你不知道的高级技巧

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 设计一个SCP性能优化工具&#xff0c;能够分析当前网络环境和文件特征&#xff0c;自动推荐最优的SCP参数组合&#xff08;如-C压缩、-l限速、-c加密算法选择等&#xff09;。工具…

作者头像 李华