内容简介:调试内核肯定不是什么轻松的事情, 这里是使用kgdb进行调试, 你理解的没错, 就是kernel版的gdb.首先克隆下已经重新编译内核的虚拟机 然后设置两者的串口, 这里是用的win, mac端的串口我暂时还弄不太好, 所以很不情愿地用了下win:目标机执行:
- 前言
- 虚拟机串口设置
- 测试串口
- 配置目标机
- 开始调试
- 调试驱动模块
- 最后
前言
调试内核肯定不是什么轻松的事情, 这里是使用kgdb进行调试, 你理解的没错, 就是kernel版的gdb.
虚拟机串口设置
首先克隆下已经重新编译内核的虚拟机 然后设置两者的串口, 这里是用的win, mac端的串口我暂时还弄不太好, 所以很不情愿地用了下win:
- 开发机
- 目标机
测试串口
目标机执行:
sudo cat /dev/ttyS1 复制代码
开发机切换成root用户, 执行:
echo “Hello, world!”>/dev/ttyS1 复制代码
配置目标机
打开grub文件:
sudo vim /etc/default/grub 复制代码
增加如下内容:
GRUB_CMDLINE_LINUX="nokaslr rootdelay=90quiet splash text kgdboc=ttyS1,115200“ 复制代码
更新grub:
sudo update-grub 复制代码
nokaslr, 禁止内核地址随机化, 具体内容请自行google:
reboot 复制代码
然后重启的时候, 就能够看到一行关于nokaslr的提示了.
开始调试
然后开始测试一下kgdb的调试, 目标机切换为root用户, 控制权限交给kgdb, 目标机进入假死状态:
echo g > /proc/sysrq-trigger 复制代码
开发机进入自编译内核目录
gdb ./vmlinux target remote /dev/ttyS1 handle SIGSEGV noprint nostop pass break sys_clone c s 复制代码
这里把断点给到sys_clone, 就是大家熟悉的fork会调用的, 这样基本等一会, 系统就自己调用, 然后进入调试了. 之后就和使用gdb无异了:
调试驱动模块
要调试自己的写的驱动模块, 就有些麻烦了, 首先需要常规的插入模块, 不多说了. 然后这里有个 shell 脚本可以获取下一些所需参数, 主要是用来插入符号参数:
#!/bin/bash # # usage: gdbline.sh module_name module_path # # This script will outputs an add-symbol-file line suitable for pasting into gdb to examine # a loaded module. # cd /sys/module/$1/sections echo -n add-symbol-file $2 `/bin/cat .text` for section in .[a-z]* *; do if [ $section != ".text" ]; then echo " \\" echo -n " -s" $section `/bin/cat $section` fi done echo 复制代码
首先, 需要在目标机make生成.ko文件, 然后将这个.ko文件拷贝至开发机的同名目录下.
然后在目标机插入.ko文件 用shell脚本获取.text, .data, .bss段基址. 如果你不太清楚这些东西, 还是请自行google, 因为如果展开, 篇幅就控制不住了.
目标机切换为root用户, 控制权限交给kgdb, 目标机进入假死状态:
echo g > /proc/sysrq-trigger 复制代码
开发机进入自编译内核目录
gdb ./vmlinux target remote /dev/ttyS1 handle SIGSEGV noprint nostop pass 复制代码
常规操作之前也说了, 然后就是新的操作, 要用add-symbol-file插入符号信息, 然后输入y确认:
然后把断点打在模块函数DriverWrite中, 开始运行:
切回目标机, 已经不是假死了, 运行用户态程序:
然后开发机就会触发断点:
接下来就和平常使用gdb调试一样了.
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
CSS高效开发实战—CSS 3、LESS、SASS、Bootstrap、Foundation
谢郁 / 电子工业出版社 / 2014-9 / 59.00
想象一下,一个网页只有HTML,没有CSS,那就是素颜和上妆的区别。而一个网页只有CSS,没用CSS 3,那就是马车和汽车的区别!汽车代表的是高效、美观,CSS 3的意图也是如此。移动设备的流行导致了响应式设计的流行,而CSS 3正是实现这种设计的精髓。《CSS高效开发实战—CSS 3、LESS、SASS、Bootstrap、Foundation》围绕的就是如何跨浏览器、跨设备进行高效率的CSS开......一起来看看 《CSS高效开发实战—CSS 3、LESS、SASS、Bootstrap、Foundation》 这本书的介绍吧!