我正在尝试在 Android (Java/C/C++) 上调试混合代码。我的目标设备是 Vizio 1008。代码在模拟器上运行,我可以使用 GDB 从 Eclipse 调试它。但是,我无法在真实设备上执行此操作。
经过几天的努力,我定位了问题:
当 GDBSERVER 在设备上启动(成功)时,它会立即退出并显示消息:“请求未知寄存器 d0”。因此,不可能进行调试会话。我还尝试了 ARM 的 DS-5 调试器。GDBSERVER 保持连接状态,但在远程调试器尝试连接时退出。我尝试了 GDBSERVER 调试输出,但它没有提供任何有用的信息。
更奇怪的是,我尝试了任何我能得到的 GDBSERVER 版本,它们的行为都是这样的。但是,我从 Google NDK 的旧版本之一(3 或 4 个版本)中找到了 GDBSERVER。这个版本可以工作!!!但是,调试器(在主机上)很快就死了(分段错误),即使我知道程序没问题。
我查看了 GDBSERVER 源代码,看起来,这个错误与 GDBSERVER 检查硬件时的启动顺序有关。可能,它与浮点协处理器有关,但我不确定,因为此错误消息非常通用。
如果重要的话,我正在使用 Google NDK 在 Windows 上进行开发。代码是 99% 的 C/C++,带有 Java shell 和一些用 Java 实现的函数(线程 HTTP 调用)。同样,应用程序可以在设备上运行,并且可以在模拟器上进行调试(Java 和 C/C++)。我还可以在设备上调试 Java 部分。
有谁知道它可能是什么?以及如何解决这个问题?是维齐奥吗?
先感谢您。