我在调试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(左);

一个简单的检查表明它确实跳过了这些代码行之间的所有代码。
例如,从未调用或编写过Log.d(...)。

谁能给我一个线索,为什么会发生???

谢谢!

最佳答案

在编译代码之后并开始调试之前,请尝试右键单击该项目上显示的项目上的> refresh

07-26 03:09