我设法在here所描述的root设备上构建和安装Valgrind。问题是,我需要在一个相当大的应用程序中分析本机库,Valgrind试图分析整个过程,包括ART运行时本身。当应用程序启动时,它会推出大量有关运行时的日志,并在此过程中显示几个ANR。如果我让它运行一分钟,它会崩溃以下日志,因为,我猜,系统会施加某种超时:
A/OpenGLRenderer: Encountered EGL error 12302 EGL_CONTEXT_LOST during rendering
A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 31435 (RenderThread)
I/start_valgrind.sh: ==31362== Process terminating with default action of signal 6 (SIGABRT)
I/start_valgrind.sh: ==31362== at 0x49766A8: tgkill (in /system/lib/libc.so)
I/start_valgrind.sh: ==31362== by 0x49539BF: pthread_kill (in /system/lib/libc.so)
它甚至无法显示主要活动,一切都在初始化期间发生。有没有办法只在特定的JNI库上使用Valgrind,而不会触及应用程序的其余部分,更不用说运行时了?