虚拟机系统版本:
Ubuntu 16.04 x86_64
qemu 版本:
Linux内核源码和工具链版本:
eclipse 版本:
eclipse CDT 插件版本:
编译内核:
1. 进入内核源码目录
2. export ARCH=arm64
3. export CROSS_COMPILE=aarch64-linux-gnu-
4. make defconfig
5. make -j16 #16表示我本地虚拟机有16核,具体多少核可以用命令nproc来获取
编译后的内核镜像文件在arch/arm64/boot/下
遇到的问题:
1.GDB输入r指令提示Cannot find bounds of current function
解决方案:如果不是待调试程序格式问题(x86和arm64),那么就先输入C(continue)指令让程序运行起来
2.qemu调试l内核在start_kernel打了断点,输入C后,不会停到start_kernel
解决方案:禁用randomize address of kernel image
3.eclipse创建Linux内核源码工程后,分析源码文件过程中程序奔溃
解决方案:新建debug的时候不指定project,只需配置好gdb和待调试的vmlinux,connect下使用tcp,端口1234,IP:localhost
最后来一张真香的单步调试: