使用VMware和GDB进行Linux内核调试
Intro
之前搭过以qemu+gdb搭内核调试环境,在这次学习Ubuntu 16.04 ebpf arbitrary read/write
的分析的时候,换了一个以 VMware 和 GDB的环境进行调试。
Environment
Host: Mac OS X , VMware Fusion
Guest: Ubuntu Linux 14.04 x64
Step 1: Configure your host
第一步当然是要安装VMware 和安装相应内核的linux系统。当我们安装完之后,在虚拟机的目录下找到xxx.vmx文件,添加一行内容。debugStub.listen.guest64 = "1"
如果是32位环境,将64进行替换。
Step 2: Configure your guest
我们首先得编译好相关的内核,关于内核编译的内容就不在这复述,我们需要编译完成的vmlinux文件,这个文件将作为符号信息最终将祭祀给GDB
Step 3: Build and Connect GDB
由于mac os环境下的 brew install
的GDB不支持linux相关,所以我们得自己编译一个GDB,
1 | wget http://ftp.gnu.org/gnu/gdb/gdb-8.1.tar.gz |
通过configure的设置,我们可以编译得到咱们想要的GDB模式。
mac的话,我们可以在 /usr/local/bin
找到我们编译安装后的GDB
1 | # swing @ swingdeMacBook-Pro in /usr/local/bin [17:18:19] |
Start Debugging
之后,我们只需要运行我们编译后的GDB版本,然后file vmlinux,加载符号信息,然后通过target remote :8864
ps :32位替换64即可。
这样我们就可以开始咱们的调试之旅了。