淘先锋技术网

首页 1 2 3 4 5 6 7

我在模拟器上将独立的Java调试器与android应用程序一起使用时遇到麻烦。显然,可以通过执行以下步骤来利用任何具有远程功能的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”对于在本​​地主机上运行的非Android Java应用程序也能正常工作。

有什么提示(“请使用日食”除外)?

我只是在任何地方都缺少愚蠢的细节吗?

该应用程序是一个HelloWorld,构建命令是“ ant debug”。

先感谢您。