安卓调试?

3
什么是调试Android应用程序的最佳方法? 偶尔应用程序会崩溃,并显示“应用程序意外停止”的消息,它从来没有说明为什么崩溃或在我的代码中的哪个部分,那么找到崩溃和异常原因的最好方法是什么?
5个回答

5
你最好的方法是在你的应用中包含一个错误和崩溃报告服务。一个很好的例子是Instabug,它可以在后台自动将所有用户的崩溃情况传递到产品的仪表板上,一旦发生崩溃。
报告会合并在一个仪表板中,并为您提供有关每个应用程序版本的崩溃、崩溃严重程度等方面的见解。
每个崩溃报告还包括大量细节,包括:
  • 崩溃堆栈跟踪
  • 所有网络和控制台日志
  • 环境快照
  • 可视化重现步骤

为了完全透明,我在Instabug工作。如果需要帮助,请告诉我。


4

有几种方法可以实现这个功能,激活 LogCat 后,您将在其中看到有关您的应用程序发生的详细信息。

或者您可以实现一个错误处理程序,将异常信息发送到 Toast。

 try {
    ...
    your code
    ...
 } catch (IOException e) { 
     Toast.makeText(getApplicationContext(), "Exception Info " +     e.getCause(),Toast.LENGTH_LONG).show();
    e.printStackTrace();
 }      

更新


4
如果你不打算以有意义的方式处理异常,那么最好让异常崩溃应用程序。这种情况很糟糕。 - ognian
1
嗨,Ognian,我认为有时向用户显示错误消息比显示丑陋的消息“应用程序意外停止”并强制关闭整个应用程序更好=(。 - Jorgesys
展示完整的e.getMessage()给用户是不好的实践。对话框应该解释出了什么问题,而不是给出堆栈跟踪。此外,这种方法存在安全问题。你不知道消息里有什么。我曾经以这种方式暴露了我的SQL查询和数据库架构 :P - CodeFusionMobile
哈哈,我理解这种方法,如果提示信息只显示几秒钟的话,那就更好了:P,但是这在发布版本中是不可能的。 - Jorgesys
1
@Elenasys 您多加了一个),应该在这里 --> e.getCause() - Dimitar
@user8 我已经编辑了那个细节,非常感谢你,我的朋友! - Jorgesys

4

如果您正在使用ADB,请以调试模式启动您的应用程序,以便在运行时查看变量/表达式。 如果您的应用程序崩溃,您还可以在IDE的Logcat窗口中查看堆栈跟踪。


您可以在窗口 > 显示视图 > 其他 中找到 logcat 窗口,然后搜索 logcat。 - Nikos Tsokos

0

你也可以通过 Android 的 DDMS 工具捕获日志。 只需在 cmd 中键入 DDMS,它将显示一个带有运行日志和更多调试工具的 GUI。


0

使用Android的Log类和logcat,例如:

Log.d(“您的应用程序名称”,“x的值为:”+ x);

在日志输出中,您将获得如下内容:

D /您的应用程序名称(1001):x的值为:96

您可以通过运行“adb logcat”或使用Dalvik调试监视器(位于Android SDK工具目录中的ddms)从命令行获取日志输出。

使用Log优于使用Toast,因为Toast很快就会消失,而logcat会在应用程序崩溃时显示许多信息(例如导致未处理异常的文件名和行号)。


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