Linux Kernel代码目录scripts下工具
1 bloat-o-meter
统计二进制函数、数据、只读数据的变化,可用于统计函数代码量。
效果如下:
1 2 3 4 5 6 7 8 9 10 11
| hostname@linux:~/work/kernel/linux-nex/scripts> ./bloat-o-meter -c test test2 add/remove: 1/0 grow/shrink: 0/0 up/down: 7/0 (7) Function old new delta test - 7 +7 Total: Before=355, After=362, chg +1.97% add/remove: 0/0 grow/shrink: 0/0 up/down: 0/0 (0) Data old new delta Total: Before=1, After=1, chg +0.00% add/remove: 0/0 grow/shrink: 0/0 up/down: 0/0 (0) RO Data old new delta Total: Before=4, After=4, chg +0.00%
|
2 bootgraph.pl
启动时长统计
添加启动参数:initcall_debug printk.time=1
dmesg > tmp.txt
scripts/bootgraph.pl tmp.txt > tmp.svg
3 checkincludes.pl
检查是否包含重复头文件
4 checkstack.pl
内核栈大小检查
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| hostname@linux:~/work/kernel/linux-next> objdump -d vmlinux | scripts/checkstack.pl arm64 0xffff8000080128000 __bp_harden_el1_vectors [vmlinux]: 8320 0xffff8000080108000 vectors [vmlinux]: 5376 0xffff8000080758000 __bp_harden_hyp_vecs [vmlinux]: 1280 0xffff800008f8e8000 __kvm_nvhe___bp_harden_hyp_vecs [vmlinux]:1280 0xffff8000088422600 arm_smmu_atc_inv_domain.part.0 [vmlinux]:1168 0xffff8000088420d00 arm_smmu_sync_cd [vmlinux]: 1152 0xffff800008841ca00 __arm_smmu_tlb_inv_range [vmlinux]: 1136 0xffff8000088426700 arm_smmu_atc_inv_master.isra.0 [vmlinux]:1136 0xffff80000879dc800 gntdev_ioctl_grant_copy.constprop.0 [vmlinux]:1104 0xffff800008a763d00 hclge_dbg_dump_tm_pri [vmlinux]: 1104 0xffff80000832a0900 parse_elf_properties [vmlinux]: 1088 0xffff800008e189c00 __rtnl_newlink [vmlinux]: 1088 0xffff80000832c8440 parse_elf_properties.isra.0 [vmlinux]:1072 0xffff800008726c300 zynqmp_register_clocks.isra.0 [vmlinux]:1072 0xffff8000082c7f500 do_sys_poll [vmlinux]: 1056 0xffff8000087880800 update_balloon_stats [vmlinux]: 992 0xffff800008a583540 hns3_dbg_rx_bd_info [vmlinux]: 944 0xffff800008a75fb00 hclge_dbg_dump_vlan_offload_config [vmlinux]:928 0xffff8000082c74a00 do_select [vmlinux]: 912 0xffff800008510db00 HUF_readStats [vmlinux]: 912 0xffff8000088016f40 of_platform_serial_probe [vmlinux]: 912 0xffff800008a57bf40 hns3_dump_coal_info.isra.0 [vmlinux]:912 0xffff800008a76a300 hclge_dbg_dump_tm_qset [vmlinux]: 896
|
5 config
用于开启、关闭内核配置选项
1 2 3 4 5 6 7
| hostname@linux:~/work/kernel/linux-next> scripts/config -e CONFIG_ARM64 hostname@linux:~/work/kernel/linux-next> scripts/config -s CONFIG_ARM64 y hostname@linux:~/work/kernel/linux-next> scripts/config -d CONFIG_ARM64 hostname@linux:~/work/kernel/linux-next> scripts/config -s CONFIG_ARM64 n hostname@linux:~/work/kernel/linux-next>
|
6 diffconfig
对比内核配置选项差异。效果如下:
1 2 3
| hostname@linux:~/work/Linux_Kernel> scripts/diffconfig test/a_config test/b_config +ACPI +xxx
|
7 faddr2line
地址转换文件行
$ ./scripts/faddr2line ~/k/vmlinux meminfo_proc_show+0x5/0x568
meminfo_proc_show+0x5/0x568:
meminfo_proc_show at fs/proc/meminfo.c:27