【问题标题】:How to debug app when it's killed如何在应用程序被杀死时调试它
【发布时间】:2021-11-08 08:00:31
【问题描述】:

我的应用在某些活动上存在错误:当它重新启动时(当它被杀死然后用多任务程序再次打开时),它崩溃了。我认为这与我的单身人士有关,但我不确定。我想查明问题,但我无法调试,因为当我终止应用程序时调试器停止(我正在使用adb shell am kill <package-name>)。

有谁知道我可以如何调试这个问题? (或者给我一个提示我的问题可能是什么)

【问题讨论】:

    标签: android visual-studio xamarin xamarin.android


    【解决方案1】:

    您可以在主活动的 onCreate() 方法中添加以下代码:

    android.os.Debug.waitForDebugger();
    

    这将暂停您的应用,直到将调试器附加到进程。

    然后:

    • 运行您的应用程序
    • 将您的应用置于后台(例如,使用主页按钮)
    • 终止进程或使用MemoryPump 之类的应用程序来填充 RAM 并让您的应用程序被 Android 终止
    • 使用多任务面板切换回您的应用(应用将启动并等待调试器)
    • 将您的 android studio 调试器附加到您的应用(Android Studio 工具栏中的图标位于“运行应用”图标和“停止应用”图标之间)
    • 调试您的应用

    【讨论】:

      【解决方案2】:

      我会使用 DDMS(Dalvik Debug Monitor Server (DDMS) 来捕获堆栈跟踪等。在您杀死并重新启动我们的应用程序之后。

      (仅供参考:它已与其他 Android 工具集一起安装)

      虽然它不允许您通过 VS/XS 调试您的应用程序,但它可以帮助您确定导致问题的应用程序区域。从那里我会在问题区域周围添加日志记录(即老式printf 样式调试)

      http://developer.android.com/tools/debugging/ddms.html

      从 Visual Studio 启动:

      来自 Xamarin Studio:

      【讨论】:

      • 好的,我试试。顺便说一句,我刚刚发现您可以通过单击 this button 从 Visual Studio 打开 DDMS。
      • @FrederickEskens 谢谢,我将该链接添加到答案中以及如何从 Xamarin Studio 中启动
      • 另一个注意事项:确保您以管理员身份运行 VS/XS。这让我太费劲了。
      【解决方案3】:

      如果您使用单例类预加载一些数据,则在您终止应用程序时实例将被销毁,因此您必须重新加载单例所需的数据。

      您还可以添加Raygun,它将捕获所有异常并将其发送到服务器,您可以在其中查看异常详细信息。

      您可以从 nuget 获得它:Mindscape.Raygun4Net 5.3.0

      【讨论】:

      • 我假设是这样,所以我将ifs 放在 onCreate 中,并在 onResume 中检查单例是否为null。如果是,它应该回到主要活动。但它仍然崩溃。
      猜你喜欢
      • 2021-03-02
      • 1970-01-01
      • 2020-10-23
      • 2019-04-08
      • 2018-07-10
      • 1970-01-01
      • 1970-01-01
      • 2020-05-10
      • 1970-01-01
      相关资源
      最近更新 更多