【发布时间】:2012-01-30 00:35:02
【问题描述】:
我在调试 android 应用程序时遇到了一个奇怪的问题。 准确地说,我在这里复制了我正在运行的确切代码:
// Get the puzzles from cache
List<PuzzleDetails> newPuzzles = m_cachedPuzzles.getPuzzles(count);
if(newPuzzles.size() > 0){
// Remove from cache
m_cachedPuzzles.removePuzzles(newPuzzles); // LINE (A)
// Add the new puzzles from cache immediately
m_ownedPuzzles.addPuzzles(newPuzzles);
Log.d("requests", "" + newPuzzles.size() + " moved from cache to user");
}
int left = count - newPuzzles.size();
String deviceId = ResourcesPublisher.getInstance().getDeviceId();
// Don't let anyone else use these points for now
ChallengePointsManagerImpl.getInstance().usePoints(left);
Log.d("requests", "aquirePuzzles(" + left + ")");
// Get a list of requests for 'left' number of puzzles
RequestList reqList = getRequestList(left);
// TODO this is a bug, now
if(reqList.size() > 1){
reqList = getRequestList(left); // LINE (B)
}
当我在这段代码上运行时,在跨过线 (A) 之后 m_cachedPuzzles.removePuzzles(newPuzzles); 调试器“跳转”到最后一行 (B) reqList = getRequestList(left);
一个简单的检查表明它确实跳过了这些代码行之间的所有代码。 例如,Log.d(...) 从未被调用或写入。
谁能告诉我为什么会这样???
谢谢!
【问题讨论】:
-
如果它从未被调用,那么很可能源代码和可执行文件“不同步”。尝试进行清理、重建和重新启动。
-
我尝试过清洁,但它仍然会发生.. 这真的很奇怪 - 每次都会发生,所以我觉得更有义务检查和修复它。我只是不知道从哪里开始......
-
你关闭模拟器后重启了吗?
-
是的,我刚刚关闭了模拟器和 Eclipse,然后重新启动了它们。没有帮助我...
-
嗯。如果您只复制源代码并创建一个新项目怎么办?我仍然认为这是一个构建/部署问题,尽管我不确定还有什么要检查的。
标签: java android eclipse debugging