2011-05-09 83 views
0

我不太确定我可以用这个做什么。这是一个拒绝打印堆栈跟踪的功能。我不确定是不是因为Eclipse不是'将正确的.apk部署到模拟器,或者是我正在做的事情。所以:Android的Eclipse没有击中断点/不打印到Logcat

private String getStringFromResponse(HttpResponse response) { 
    try { 
     InputStream in = response.getEntity().getContent(); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 
     StringBuilder str = new StringBuilder(); 
     String line = null; 
     while((line = reader.readLine()) != null){ 
      str.append(line); 
     } 
     in.close(); 
     String responseXMLString = str.toString(); 
     return responseXMLString; 
    } 
    catch(Exception ex) { 
     ex.printStackTrace(); 
     String stackTrace = ex.getStackTrace().toString(); 
     Log.i("PPKMCC-NtwrkAccessClass", stackTrace); 
     return null; 
    } 
} 

有一个例外,在str.toString()。我不知道原因,因为我无法查看堆栈跟踪。我不认为这是因为响应的大小,因为相同的代码直到现在才正常下载这些首选项。

catch块中,printStackTrace()不输出到Logcat。我在String stacktrace有一个中断点,但它不会触及该特定断点,而是直接跳转到return null。我试过重置模拟器,创建一个全新的模拟器实例,清理我的项目,他们都没有工作。

任何帮助非常感谢!

谢谢,
Teja。

+0

所以如果你把一个断点在=行的InputStream它永远不会停在那里(和你正在使用调试模式,而不只是运行应用程序?)。另外,如果你没有得到堆栈跟踪,你怎么知道那个例外? – jkhouw1 2011-05-09 18:45:06

+0

它在String responseXMLString = str.toString();'处罚款。我尝试着手下一步,直接跳转到'return null'。没有堆栈跟踪被打印。 – 2011-05-09 18:49:05

回答

2

关于堆栈跟踪,

你不能直接打印的堆栈跟踪像Java中,你必须做一些体操的。 你可以试试这个:

Log.e("jason", "Login exception triggered : "+ e.getMessage() +"\n"+e); 
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
PrintStream stream = new PrintStream(baos); 
e.printStackTrace(stream); 
stream.flush(); 
Log.e("jason", new String(baos.toByteArray())); 

关于断点:

我建议:

1)检查函数被调用

2)检查您是否在调试启动

3)检查您的清单是否允许调试

关于str.toString(),我认为它只能在空对象上调用时崩溃。 我建议增加一个

`if(str != null) 
{ 
    //toString 
}else{ 
    Log.e(TAG,"str == null"); 
} 

`

希望它可以帮助

杰森

+0

是的,函数可以正常工作,直到stmt'String responseXMLString = str.toString();'。它碰到了那里的断点,我试着走到下一步(F6),即使在'ex.printStackTrace()'处有断点时,它也会直接跳转到'return null'。 – 2011-05-09 18:50:33

+0

添加代码来打印我发布的堆栈。您当前的代码将不会打印堆栈。为什么它不停止,我只能猜测。我记得有一次,我不得不休息手机的出厂设置,让它更新我的代码lol – 2011-05-09 18:57:05

+1

哦,我已经在我的清单中设置了'debuggable =“false”'来创建我的应用程序的发布版本,并完全忘记了它。我已经删除它,它的工作原理。如果debuggable设置为false,为什么它甚至会打断点? – 2011-05-09 19:02:16