export ARCH=arm64 export CROSS_COMPILE=aarch64-linux-gnu- 打开静态库编译选项 make menuconfig Settings ---> [*] Build static binary (no shared libs) 如果报错: : fatal error: curses.h: No such file or directory compilation terminated. 安装ncurses库 sudo apt-get install libncurses5-dev lib...
第一步:qemu启动内核并暂停等待(暂停是可选的,如果不调启动,可以去掉),同时需要建立网络端口等待gdb attach; 第二步:启动gdb(target=arm64)加载对应kernel Image的vmlinux, attach到指定端口即可; 第三步:如果是启动是挂起,直接设置断点即可调试,如果未选择启动暂停,ctrl + c会触发挂起,然后就可以和前面一样,正...
下载并安装GDB,这是一种功能强大的调试器,可用于调试应用程序和内核。 下载并安装QEMU,这是一种虚拟化工具,可用于模拟ARM64架构的处理器和运行Linux内核。 配置VSCode插件: 在VSCode中安装"Native Debug"插件,它提供了与GDB的集成调试功能。 准备内核和根文件系统: 下载适用于ARM64架构的Linux内核源代码,并编译生成...
1.测试代码test.S .global _start _start: mov x1,0x80000 mov x3,16 ldr x0,[x1] ldr x2, [x1,#8] ldr x4, [x1,x3] ldr x5, [x1,x3,lsl#3] 1. 2. 3. 4. 5. 6. 7. 8. 9. 2. 编译 makefile文件 ARMGNU ?=aarch64-linux-gnu test.elf: test.o $(ARMGNU)-ld-Ttext0x0-...
创建Makefile和驱动测试文件,进行交叉编译和在qemu上加载驱动,使用GDB进行内核模块调试。Eclipse可视化调试:安装arm-none-eabi-gdb和Java环境,配置Eclipse-CDT以支持ARM64架构,利用Eclipse进行内核单步调试。通过以上步骤,你将成功搭建一个适合ARM64+Linux调试的环境,进行内核开发和调试工作。
接下来是调试步骤:首先,启动qemu并暂停内核,设置网络端口以等待gdb的连接;然后,启动gdb,指定目标为arm64,加载vmlinux并连接到指定的端口;如果内核启动时自动暂停,可以直接设置断点,否则需在挂起后设置。qemu的调试脚本示例中,务必确保在内核源码目录下执行gdb,以查看并处理KASLR带来的问题。KASLR(...
在VSCode中点击调试按钮,选择"Debug Linux Kernel"配置,然后点击启动按钮。 开始调试: 此时,VSCode会连接到QEMU模拟器并启动GDB调试器。你可以使用VSCode的调试功能,例如设置断点、单步执行等。 可以在调试会话中查看和修改寄存器、内存和变量的值,以及执行其他调试操作。
参考https://github.com/WojciechMigda/how-to-qemu-arm-gdb-gtest 注意是调试arm而不是 NDK arm sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf
三、编译Linux kernel 3.1 下载Kernel包 https://www.kernel.org/ 点击tarball下载Linux 4.4.281 LTS 得到压缩包 : linux-4.4.281.tar.xz 3.2 解压kernel #将内核压缩包拷贝至WSL用户文件夹下cp./linux-4.4.281.tar.xz ~/ #解压文件tar-xvf linux-4.4.281.tar.xz ...
序言一:Linux内核学习方法论 概述Linux4.X内核书籍 给予ARM32和ARM64的内核分析书籍 “O0”内核调试实验 阅读建议 奔跑卷 先做奔跑卷,边阅读代码边做题,奔跑卷基于Linux4.0内核搭建“qemu+gdb+eclipse+O0”的内核调试环境。 阅读相应章节内容之前,先思考每章前面的思考题,带着思考题来阅读相应章节内容。 《奔跑吧...