【问题标题】:Using ndk-stack on an SDK-only app在仅限 SDK 的应用程序上使用 ndk-stack
【发布时间】:2013-01-11 07:07:13
【问题描述】:

我在 Android 应用程序的嵌入式 WebView 中使用了一些本地 HTML5 文件。这是仅使用 SDK 而不是 NDK 构建的。当 WebView 加载时,HTC One X (不是任何其他手机)上存在分段错误,并且应用程序崩溃。我读过 ndk-stack 可用于查看可能出现问题的堆栈跟踪。但是没有 obj 目录,即。使用 sdk-only 项目,是否可以使用 ndk-stack?

01-11 12:19:40.286: I/DEBUG(139): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
01-11 12:19:40.286: I/DEBUG(139): Build fingerprint: 'htc_europe/endeavoru/endeavoru:4.0.3/IML74K/56722.9:user/release-keys'
01-11 12:19:40.286: I/DEBUG(139): pid: 7062, tid: 7078  >>> com.bose.sample.android <<<
01-11 12:19:40.286: I/DEBUG(139): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0000014c
01-11 12:19:40.286: I/DEBUG(139):  r0 00000000  r1 50a8d210  r2 43b40000  r3 505406cd
01-11 12:19:40.286: I/DEBUG(139):  r4 025c1ad8  r5 00000000  r6 023c0738  r7 02339588
01-11 12:19:40.286: I/DEBUG(139):  r8 51fa5aa0  r9 51fa5a34  10 51fa5ab8  fp 00000001
01-11 12:19:40.286: I/DEBUG(139):  ip 000000a0  sp 51fa5920  lr 505406d9  pc 50540342  cpsr a0000030
01-11 12:19:40.286: I/DEBUG(139):  d0  0000000000000000  d1  000001680000000c
01-11 12:19:40.286: I/DEBUG(139):  d2  3f80000000000000  d3  0000000000000000
01-11 12:19:40.286: I/DEBUG(139):  d4  8000000000000000  d5  000000003f800000
01-11 12:19:40.286: I/DEBUG(139):  d6  0000000000000000  d7  4140000043b40000
.............
01-11 12:19:40.286: I/DEBUG(139):  scr 20000013
01-11 12:19:40.436: I/DEBUG(139):          #00  pc 001b4342  /system/lib/libwebcore.so
01-11 12:19:40.436: I/DEBUG(139):          #01  pc 001b46d4  /system/lib/libwebcore.so
01-11 12:19:40.436: I/DEBUG(139):          #02  pc 003c8fbc  /system/lib/libwebcore.so
01-11 12:19:40.436: I/DEBUG(139):          #03  pc 003c9e32  /system/lib/libwebcore.so
...............

谢谢,
拉贾特

【问题讨论】:

  • 实际上可以通过转储已安装的 .so 来推断出相当数量的数据。但是,请考虑另一种方法,即通过实验将 HTML5 文件减少到仍然能够导致崩溃的最小情况。

标签: android android-ndk segmentation-fault android-webview htc-android


【解决方案1】:

在这种情况下,您需要的目标文件位于设备/system/lib/libwebcore.so 上,但您可能无权访问它。即使您设法得到它,该文件也被剥夺了调试符号 - 这意味着它不会告诉您任何有价值的信息。

【讨论】:

  • 好吧,每个人都拥有对/system/lib 的读取权限,但在所讨论的情况下它并没有多大帮助,因为所有调试信息都从这些库中删除了。我认为这种情况需要向 HTC 报告错误。
  • 仅仅因为一个库被剥离并不意味着它没有有用的信息。请记住,所有动态链接的函数仍将具有名称。尤其是当您从 AOSP 获得一般可比较的资源时,实际上可能可以大致了解崩溃时发生的情况。另请记住,我们不知道崩溃是否真的是供应商独有的,或者该设备是否只是唯一具有测试人员可用的精确上游 Android 版本的设备。
  • @ChrisStratton 省略了帧指针,拥有一个只有一个条目的庞大库......所有这些都是为了让开发人员的生活更轻松。
猜你喜欢
  • 1970-01-01
  • 2012-05-03
  • 2019-11-08
  • 2011-09-13
  • 2019-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多