Eclipse调试器“跳转”跳过重要的代码
调试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(...)从来没有被调用也没有被写入。
任何人都可以给我一个线索为什么会发生?
谢谢!
尝试在编译代码之后并开始调试之前,在项目资源管理器上显示的项目上执行右键单击> refresh
。
也许从A行抛出一个异常,下一步对应于关闭这个堆栈帧?
mIsReaded = (mIsReaded)?false:true;
//mIsReaded = !mIsReaded;
saveReadFlag();
refreshUI();
Toast.makeText(getSherlockActivity(),...
在我的情况下,评论codeline导致类似的问题(两行被跳过)。 为了解决这个问题,我刚刚通过上面的代码行更改了这一行(我的意思是mIsReaded =(mIsReaded)?false:true;)因此,不同的案例有不同的解决方案。 它是由编译器进行代码优化的结果,所以请重新构造(内部)m_cachedPuzzles.removePuzzles(newPuzzles)中的某些内容。
链接地址: http://www.djcxy.com/p/10403.html