我在模拟器上使用带有 android 应用程序的独立 java 调试器时遇到了麻烦。显然,可以按照以下步骤使用任何具有远程功能的 Java 调试器,例如 jdb(或 jswat)(正如我在此处和那里阅读后所理解的那样):
1)打开模拟器,在模拟器上安装你的应用(adb install)
2)打开dalvik服务器(ddms)
3)在模拟器上,运行“DevTools”应用程序->“开发设置”->选择要调试的应用程序,启用“等待调试器”标志
4)再次在模拟器中,运行您的应用程序;它将阻塞,等待调试器附加,dalvik 将显示一个被“红色错误”标记的新进程
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”。
先感谢您。