0

据我了解,除非使用本机代码,否则我们不应该看到这些,我绝对不会。我只是调用一堆获取 Web 数据并填充列表视图的 AsyncTask。

我该如何调试它?绝对没有任何迹象表明它是什么原因造成的,而且它非常一致,每 6 或 7 次我的操作中就有 1 次发生,它只发生在 GNex 上,而不是在模拟器中。将大量的 logcat 放在它周围是唯一的方法吗?

12-08 00:26:03.362: D/dalvikvm(10906): GC_CONCURRENT freed 651K, 12% free 10861K/12320K, paused 4ms+9ms, total 52ms
12-08 00:26:03.362: D/dalvikvm(10906): WAIT_FOR_CONCURRENT_GC blocked 18ms
12-08 00:26:03.362: D/dalvikvm(10906): WAIT_FOR_CONCURRENT_GC blocked 6ms
12-08 00:26:03.401: A/libc(10906): Fatal signal 11 (SIGSEGV), thread 10958 (pool-1-thread-9)
12-08 00:26:03.401: A/libc(10906): Fatal signal 11 (SIGSEGV) at 0x637f4008 (code=1), thread 10923 (pool-2-thread-1)
12-08 00:26:04.330: I/Choreographer(10906): Skipped 47 frames!  The application may be doing too much work on its main thread.
4

1 回答 1

1

我该如何调试它?

很可能,你不知道。你把它报告给别人修复。

首先,创建一个可以重现错误的示例项目。

然后:

  • 如果您在 ROM mod 上遇到此问题,并且它在标准 Android 环境中正常工作,请针对 ROM mod 提交错误报告,提供您的示例项目和完整的 LogCat 输出(包括来自 SIGSEGV 的所有核心转储,如果可用)

  • 如果您在特定制造商的设备而不是其他环境(例如仿真器)上遇到此问题,请尝试联系有问题的制造商。例如,HTC 倾向于htc在 StackOverflow 上监控标签。

  • 如果您在模拟器、Nexus 设备(运行库存 ROM)或来自不同制造商的多个设备中遇到此问题,则问题可能出在 Android 本身,因此请在http://b.android.com上提交问题包含示例项目、LogCat 转储和重现错误的步骤

在记录和注释掉你的应用程序的某些部分(或者可能在调试器中运行它,如果你可以在那里重现错误)之间,你应该能够掌握你的代码的哪一段触发了 SIGSEGV。这可以为您提供数据,或许有助于解决问题,此外,它还可以让您了解在示例项目中放置什么来重现错误。

于 2012-12-08T13:16:48.870 回答