Linux内核调试、修改

作者: 李佶澳   转载请保留:原文地址   更新时间:2017/11/14 15:24:33

说明

内核相关的文档可以到kernel documentation中查找。

kdump

kdump

kdump是用于内核调试的工具,可以在内核panic后,将内存数据保存下来。

安装:

yum --enablerepo=debug install kexec-tools crash kernel-debug kernel-debuginfo-`uname -r`
#debuginfo的源位于:/etc/yum.repos.d/CentOS-Debuginfo.repo 

kernel-debuginfo-XXX,会在/usr/lib/debug/lib/modules目录下安装未压缩的kernel,crash调试时使用这个kernel.

在grub中配置crashkernel的大小

crashkernel=128M

启动kdump: chkconfig kdump on service kdump start

重启机器后,测试引发panic:

echo c > /proc/sysrq-trigger

这时候,机器panic后,应该会自动重启,重启后在/var/crash看到保存的coredump文件。

vmlinux解压

umzip.sh:

#!/bin/bash
if [[ ! $# -eq 1 ]];then
		echo "usage: $0  vmlinuzfile"
		exit
fi
str=`od -t x1 -A d $1|grep "1f 8b 08"`
echo $str

操作:

[[email protected]]# ./umzip.sh vmlinuz-2.6.32-504.8.1.el6.x86_64.debug 
0014432 48 8d 83 00 35 41 00 ff e0 1f 8b 08 00 04 59 c9

[[email protected]]# dd if=vmlinuz-2.6.32-504.8.1.el6.x86_64.debug bs=1 skip=14441 |zcat >vmlinux-2.6.32-504.8.1.el6.x86_64.debug
4289063+0 records in
4289063+0 records out
4289063 bytes (4.3 MB) copied, 14.7371 s, 291 kB/s
 
gzip: stdin: decompression OK, trailing garbage ignored

查看: [[email protected]]# file vmlinuz-2.6.32-504.8.1.el6.x86_64.debug vmlinuz-2.6.32-504.8.1.el6.x86_64.debug: Linux kernel x86 boot executable bzImage, version 2.6.32-504.8.1.el6.x86_64.debug, RO-rootFS, swap_dev 0x4, Normal VGA

参考

  1. kernel documentation

本文原创首发于网站:www.lijiaocn.com

QQ交流群

区块链实践互助QQ群:576555864

Kubernetes实践互助QQ群:947371129

Prometheus实践互助QQ群:952461804

Kong/Envoy实践互助QQ群:952503851

Ansible实践互助QQ群:955105412

Copyright @2011-2019 All rights reserved. 转载请添加原文连接,合作请加微信lijiaocn或者发送邮件: [email protected],备注网站合作 友情链接: lijiaocn github.com