我有一个ARM Linux内核作为android模拟器的一部分运行,我正在进行一些测试。我启动没有GUI内容的模拟器,只需使用adb shell访问模拟器的内部存储器。
我在OSX机器上启动模拟器,如下所示: -
$ emulator -verbose -debug init -show-kernel -kernel ./zImage -avd debug -no-boot-anim -no-skin -no-audio -no-window -qemu -gdb tcp::1234
我将gdb附加到模拟器,如下所示: -
$ arm-eabi-gdb ./vmlinux
(gdb) target remote :1234
我知道附件很有效,因为如果我之前附上调试器,我可以看到启动过程暂停,直到我按下" c"在gdb中。但是,当模拟器中出现内核恐慌时,我会在运行模拟器的终端上看到堆栈跟踪 - 但是,我没有看到gdb端的任何更改。当内核发生混乱时机器停止运行,因此我假设gdb会显示相同的指示。为什么不发生这种情况?
当我在模拟器端按Ctrl-C停止QEMU时,收到消息emulator: Done with QEMU main loop. emulator: User-config was not changed.
,gdb显示Remote connection closed
。
我在这里失踪了什么?
答案 0 :(得分:1)
在恐慌中设置断点并检查回溯是解决问题的可能方法。