我在使用模拟器上的Android应用程序的独立java调试器时遇到了麻烦.显然,任何具有远程功能的java调试器(如jdb(或jswat))都可以通过以下步骤进行操作(正如我在此处阅读后所理解的那样):
1)打开模拟器,在模拟器上安装您的应用程序(adb install)
2)打开dalvik服务器(ddms)
3)在模拟器上,运行"DevTools"应用程序 - >"开发设置" - >选择要调试的应用程序,启用"等待调试器"标志
4)再次在模拟器中运行你的应用程序; 它将阻塞,等待调试器附加,dalvik将显示一个由"红色bug"标记的新进程
5)在dalvik上,选择红旗过程; 因此,它的调试端口转发到localhost:8700
6)将调试器挂钩到localhost:8700.使用jdb,你必须运行"jdb -attach 8700"
启动调试器后,模拟器上的应用程序将解锁.因此,似乎应用程序已正确检测到调试器,因此可以自由运行.
然而,重点是它"自由运行",也就是说,它不会等待调试器发出"运行"命令.所以我没有机会设置任何断点.
根据1的提示,我已经尝试在我的应用程序的开头放置等待循环,希望我有时间设置断点.当我尝试设置断点时,jdb会说"延迟断点XXX.YYY.它将在加载类后设置.",因为应用程序尚未运行.但是,如果我然后发出"运行"命令,答案是"没有暂停.",因为应用程序已经运行(确实如此).
使用jswat你没有看到这些消息,但最终的结果是相同的:-(
不用说,"jdb -attach"适用于在localhost上运行的非android java应用程序.
任何提示("请使用eclipse"除外)?
我在任何地方都错过了一个愚蠢的细节吗?
该应用程序是一个HelloWorld,构建命令是"ant debug".
先感谢您.