我们可以调试在Windows上运行的默认SDK Android模拟器的金鱼内核3.4吗?(即通过断点)



我需要知道我们是否可以在金鱼内核中添加一个断点并监视一些变量。请注意,我使用Linux机器来交叉编译模拟器和金鱼内核3.4(从AOSP获取(-正如我所说,模拟器是在Windows 上运行的.exe进程

我花了几天时间寻找这个问题的答案,我发现这是可能的,答案是:

编译金鱼3.4以打开内核配置文件中的调试选项

获取预构建的工具链

cd ~

git克隆https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6

通过将以下env vars附加到~/.bashrc ,为预构建的工具链设置env var

gedit ~/.bashrc

export ARCH=arm

export SUBARCH=arm

export PATH=~/arm-eabi-4.6/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH

export CROSS_COMPILE=arm eabi-

export PATH=$PATH:~/arm-eabi-4.6/darwin-x86/toolchain/arm-eabi-4.4.3

bash#再次执行bash以重新执行/bashrc文件

获取金鱼核

git克隆https://android.googlesource.com/kernel/goldfish.git

git checkout-t origin/android-goldfish-3.4-b goldfish3.4

配置和编译金鱼内核

gedit$GOLDFISH_KERNEL_PATH/arch/arm/configs/GOLDFISH_armv7_defconfig

将"CONFIG_DEBUG_INFO=y"添加到goldfish_armv7a_deconfig

使goldfish_armv7_defconfig

make-j8

测试新构建的金鱼核

现在,您可以在$GOLDFISH_kernel_PATH/arch/arm/boot/zImage中找到新构建的内核

您还需要内核的ELF格式,因为它包含gdb所需的调试符号:$GOLDFISH_kernel_PATH/vmlinux

用监听1234的gdb服务器实例启动默认的android模拟器

emulator-arm.exe-verbose-show kernel-netfast-avd test-qemu-S-gdb tcp::1234,ipv4-kernel$GOLDFISH_kernel_PATH/arch/arm/boot/zImage

获取合适的gdb版本-目标应该是android arm

下载gdb for windows:https://github.com/ikonst/gdb-7.7-android

将vmlinx从内核根文件夹复制到您的windows机器

使用命令行启动gdb:gdb.exe%GOLDFISH_KERNEL_PATH/vmlinux

(gdb(设置远程超时10

(gdb(设置调试远程1

(gdb(目标远程localhost:1234

(gdb(b sdhci_request

(gdb(步骤

(gdb(步骤

(gdb(续

(gdb(等。。

最新更新