Android WebView终止整个活动--我如何调试它?
我有一个奇怪的问题,我不知道如何面对 我的应用程序使用WebView加载HTML应用程序。它是一个长而复杂的应用程序,还涉及JavaScriptInterface 最近,我在本机webcore模块中得到了内核转储,这会扼杀整个活动 它有时会发生,但经常发生,比如说每5次中就有1次 WebView加载应用程序时总是会发生这种情况,但位置不同。似乎涉及到对导出的Java函数的调用,但不是特定的调用。我已经重构了无数次了,虽然有时候它看起来已经解决了,但这只是运气的问题。突然,它又失败了 如果WebView完成加载和初始化应用程序,它就不会崩溃。它只在load/init/start执行期间发生 几乎总是出现的唯一模式是,它看起来总是在同一个地方崩溃:Android WebView终止整个活动--我如何调试它?,android,webview,crash,fatal-error,Android,Webview,Crash,Fatal Error,我有一个奇怪的问题,我不知道如何面对 我的应用程序使用WebView加载HTML应用程序。它是一个长而复杂的应用程序,还涉及JavaScriptInterface 最近,我在本机webcore模块中得到了内核转储,这会扼杀整个活动 它有时会发生,但经常发生,比如说每5次中就有1次 WebView加载应用程序时总是会发生这种情况,但位置不同。似乎涉及到对导出的Java函数的调用,但不是特定的调用。我已经重构了无数次了,虽然有时候它看起来已经解决了,但这只是运气的问题。突然,它又失败了 如果WebV
I/DEBUG (30186): #00 pc 003a37a4 /system/lib/libwebcore.so (_ZNK5Layer8getChildEi)
I/DEBUG (30186): #01 pc 00285bae /system/lib/libwebcore.so
I/DEBUG (30186): #02 pc 0001edb0 /system/lib/libdvm.so (dvmPlatformInvoke)
I/DEBUG (30186): #03 pc 000594ba /system/lib/libdvm.so (_Z16dvmCallJNIMethodPKjP6JValuePK6MethodP6Thread)
当然,我知道这是一个不完整的问题,我会根据要求发布任何东西,但我想回答,如果有人对我如何猜测或多或少发生了什么有想法,我的意思是,我可以看看有这个堆栈跟踪的某个地方吗??谈到Android本机层,我完全不知所措
如果我知道与崩溃有什么关系,我就可以重构Java或JavaScript,但我完全是瞎子,尽管我移动了所有东西,但似乎没有任何改进
提前感谢
PD-我在ICS v.4.04上使用三星Galaxy Tab 10.1
/libc ( 575): Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1)
I/DEBUG (30186): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG (30186): Build fingerprint: 'samsung/GT-P7500/GT-P7500:4.0.4/IMM76D/XXLQ8:user/release-keys'
I/DEBUG (30186): pid: 575, tid: 591 >>> com.regaliz.libneo <<<
I/DEBUG (30186): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000
I/DEBUG (30186): r0 0117f608 r1 00000000 r2 00feb880 r3 00000000
I/DEBUG (30186): r4 00feb880 r5 00ffb568 r6 00000007 r7 50fbfe0c
I/DEBUG (30186): r8 5bf04c10 r9 50fbfe04 10 00000000 fp 5bf04c24
I/DEBUG (30186): ip 5a229ba5 sp 5bf04c08 lr 5a229bb3 pc 5a3477a4 cpsr 800f3430
I/DEBUG (30186): d0 0000000042c80000 d1 0000000043ae0000
I/DEBUG (30186): d2 3f00000043ae0000 d3 43ae000041c80000
I/DEBUG (30186): d4 00000000432e0000 d5 411efaf800000000
I/DEBUG (30186): d6 3fe03e1c9b413986 d7 41d4634c06a07c39
I/DEBUG (30186): d8 0000000000000000 d9 0000000000000000
I/DEBUG (30186): d10 0000000000000000 d11 0000000000000000
I/DEBUG (30186): d12 0000000000000000 d13 0000000000000000
I/DEBUG (30186): d14 0000000000000000 d15 0000000000000000
I/DEBUG (30186): scr 20000011
I/DEBUG (30186):
I/DEBUG (30186): #00 pc 003a37a4 /system/lib/libwebcore.so (_ZNK5Layer8getChildEi)
I/DEBUG (30186): #01 pc 00285bae /system/lib/libwebcore.so
I/DEBUG (30186): #02 pc 0001edb0 /system/lib/libdvm.so (dvmPlatformInvoke)
I/DEBUG (30186): #03 pc 000594ba /system/lib/libdvm.so (_Z16dvmCallJNIMethodPKjP6JValuePK6MethodP6Thread)
I/DEBUG (30186): #04 pc 00030c0c /system/lib/libdvm.so
I/DEBUG (30186): #05 pc 000343e4 /system/lib/libdvm.so (_Z12dvmInterpretP6ThreadPK6MethodP6JValue)
I/DEBUG (30186): #06 pc 0006ce76 /system/lib/libdvm.so (_Z14dvmCallMethodVP6ThreadPK6MethodP6ObjectbP6JValueSt9__va_list)
I/DEBUG (30186): #07 pc 0006ce98 /system/lib/libdvm.so (_Z13dvmCallMethodP6ThreadPK6MethodP6ObjectP6JValuez)
I/DEBUG (30186): #08 pc 0005ffe0 /system/lib/libdvm.so
I/DEBUG (30186): #09 pc 00013048 /system/lib/libc.so (__thread_entry)
I/DEBUG (30186): #10 pc 00012b74 /system/lib/libc.so (pthread_create)
I/DEBUG (30186):
I/DEBUG (30186): code around pc:
I/DEBUG (30186): 5a347784 47a868e1 f57f69a0 4620e95c bf00bd7c .h.G.i..\. F|...
I/DEBUG (30186): 5a347794 0036eb46 3088f8d0 bf3a4299 3080f8d0 F.6....0.B:....0
I/DEBUG (30186): 5a3477a4 0021f853 47702000 e005b911 d0034288 S.!.. pG.....B..
I/DEBUG (30186): 5a3477b4 280068c0 e000d1fa 47702001 41f0e92d .h.(..... pG-..A
I/DEBUG (30186): 5a3477c4 f8c54605 460e10a0 f5d62400 4607fa1b .F.....F.$.....F
I/DEBUG (30186):
I/DEBUG (30186): code around lr:
I/DEBUG (30186): 5a229b90 b9084603 e0042001 f8d34620 f6a611a4 .F... .. F......
I/DEBUG (30186): 5a229ba0 bd10fd01 4614b510 2100b14b f11d4618 .......FK..!.F..
I/DEBUG (30186): 5a229bb0 4601fdf3 4620b118 ffe2f7ff 2001e000 ...F.. F.......
I/DEBUG (30186): 5a229bc0 bf00bd10 4ff0e92d 6d464607 460cb0a7 ....-..O.FFm...F
I/DEBUG (30186): 5a229bd0 0b90f10d 0a88f10d 52f4f8d6 f6fa4628 ...........R(F..
I/DEBUG (30186):
I/DEBUG (30186): stack:
I/DEBUG (30186): 5bf04bc8 5bf04c24
I/DEBUG (30186): 5bf04bcc 400828c0 /system/lib/libc.so
I/DEBUG (30186): 5bf04bd0 56d045f8 /dev/ashmem/dalvik-LinearAlloc (deleted)
I/DEBUG (30186): 5bf04bd4 00ffb568 [heap]
I/DEBUG (30186): 5bf04bd8 00000003
I/DEBUG (30186): 5bf04bdc 50fbff00
I/DEBUG (30186): 5bf04be0 5bf04c10
I/DEBUG (30186): 5bf04be4 400827f0 /system/lib/libc.so
I/DEBUG (30186): 5bf04be8 5bf04bf0
I/DEBUG (30186): 5bf04bec 40129393 /system/lib/libutils.so
I/DEBUG (30186): 5bf04bf0 000607dd
I/DEBUG (30186): 5bf04bf4 00000000
I/DEBUG (30186): 5bf04bf8 40eb4a68 /dev/ashmem/dalvik-heap (deleted)
I/DEBUG (30186): 5bf04bfc 40eb4a68 /dev/ashmem/dalvik-heap (deleted)
I/DEBUG (30186): 5bf04c00 df0027ad
I/DEBUG (30186): 5bf04c04 00000000
I/DEBUG (30186): #01 5bf04c08 56e6d840 /dev/ashmem/dalvik-LinearAlloc (deleted)
I/DEBUG (30186): 5bf04c0c 40822db4 /system/lib/libdvm.so
D/PlasmaWebView[1]( 575): Invalidate triggered
I/BootReceiver( 7248): Copying /data/tombstones/tombstone_05 to DropBox (SYSTEM_TOMBSTONE)
I/DEBUG (30186): debuggerd committing suicide to free the zombie!
I/WindowManager( 7248): WIN DEATH: Window{415980d8 com.regaliz.libneo/com.regaliz.libneo.NativeStory paused=false}
I/ActivityManager( 7248): Process com.regaliz.libneo (pid 575) has died.
W/WindowManager( 7248): Force-removing child win Window{416c4f88 SurfaceView paused=false} from container Window{415980d8 com.regaliz.libneo/com.regaliz.libneo.NativeStory paused=false}
I/flint (28979): jni: deleting text normalizer ...
I/flint (28979): jni: deleting synthesizer ...
I/flint (28979): jni: deleting project file ...
I/flint (28979): jni: deleting project resource holder ...
I/DEBUG ( 631): debuggerd: Oct 7 2012 16:35:04
D/Zygote ( 7206): Process 575 terminated by signal (11)
W/ActivityManager( 7248): Force removing ActivityRecord{41303a20 com.regaliz.libneo/.NativeStory}: app died, no saved state
/libc(575):0x00000000(代码=1)处的致命信号11(SIGSEGV)
I/DEBUG(30186):******************************************
I/DEBUG(30186):构建指纹:“三星/GT-P7500/GT-P7500:4.0.4/IMM76D/XXLQ8:用户/发布密钥”
I/DEBUG(30186):pid:575,tid:591>>>com.regaliz.libneo一些调试模式
你已经异步了吗?
您是否在单独的线程中运行内容
你能在另一台设备/模拟器上重现吗?
这可能是由于不支持/更改了libwebcore或其他文件版本
在桌面浏览器上试用JS?
如果javascript在标准浏览器上运行良好,我们有一定的信心。你可以进一步使用桌面工具来分析你的JS代码,看看是否有问题。说起来有点夸张,因为其他时候错误迟早会出现,但经过5天的密集调试,我确信我已经找到了灾难的秘诀。我可以得出结论:
将WebView放入ViewFlipper中,并在中加载复杂页面
在显示另一个ViewFlipper页面(在我的例子中是一个简单的
throbber)将终止触发核心转储的活动
我仍然将WebView保留在ViewFlipper中,但只要在Init(页面加载、页面解析、body.onload)期间显示其ViewFlipper页面,我就没有问题。只要我再试一次,就。。。砰
在页面初始化且webview稳定后,我可以成功更改ViewFlipper视图。我唯一没有做的事情就是尝试更多的设备。。。是的,该应用程序在浏览器中运行完美,但问题是它与导出的js接口交互频繁。。。我只需要一些说明来解释本机核心转储…@rupps我希望我能帮助你处理核心转储