当我在为Android开发时,如何在AsyncTask中使用Eclipse调试器?

27
我在Eclipse中运行ADT (Android Development Tools) 并验证了我的调试器工作正常,因为我在 MainMenu.oncreate(class Activity) 中设置了断点。但是当我把它放在 AsyncTask.doInBackground 的第一行时,它从未被命中。我知道它正在运行,因为我在AsyncTask中放置了一个Log语句,并且它显示在LogCat中。如果能提供任何帮助将不胜感激,因为我更喜欢使用调试器而不是日志记录。

我的版本:

Eclipse SDK Version: 3.6.1  
Build id: M20100909-0800

alt text


你的清单文件(manifest)中是否设置了debugging=True? - Falmarri
是的,我在AndroidManifest.xml中添加了<manifest android:debuggable="true">。谢谢。 - Chirag Patel
我刚刚发现,如果我在doInBackground()中放置一些Log.d(),那么调试器突然开始触发断点!! - Someone Somewhere
2个回答

68
将以下代码片段放在doInBackground的开头:

android.os.Debug.waitForDebugger();

然后,当您在该线程中设置断点时,Eclipse将找到它。


1
作为一条注释,当我进行调试时,我必须将这行代码注释掉才能运行。 - Suragch
我可以看出这显然是能够做到这一点的方法,但即使在doInBackground的开头放置了这个,我仍然无法命中断点。有人知道这可能是为什么吗? - James Meade

9

除了Sargas的回答外,因为在运行模式下如果忘记注释掉那一行可能会出现错误,您可以使用以下方法:

if(android.os.Debug.isDebuggerConnected())
    android.os.Debug.waitForDebugger();

因此,它会自我维护。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接