贴一下自己的在LogCat中的打印信息如下奇怪的是程序已经报错了,下面还有C写的打印信息,难道不是出错了JNI中的C代码马上就停止运行了吗
解决方案 »
- android logo
- android AVD怎么样才能读取到pc机上USB接口的数据?急求!
- 小妹请教Activity互相发送消息问题!
- android图形库支持问题
- 编译android 4.1 otapackage arch/arm/boot/ Error 2 错误
- 关于抓包,就是抓取app和服务器之间的网络通信包。
- 求关于安卓模拟触摸的方法。。需要在不同的进程中使用
- listview里的item放webview
- android ImageView实现变暗效果 低版本怎么有和高版本一样的效果?
- 關於使用接口(介面)之疑惑?
- Android SDK中MediaPlayer播放器prepareAsync准备时间的问题,求指教
- setDisplayHomeAsUpEnabled(true); 为什么没有反应= =
是不是我这样的方式不对,我的SO文件是几个静态的a文件编译后产生的SO文件
里面应该有挂掉的堆栈,然后栈顶就是最后挂掉的地方,还有用addr2line 必须是符号库文件,也就是obj目录下的,而不是libs目录
这是我Eclipse中提示的打印信息,为什么我的没有像你切图里面Debug信息
搜寻了一下,可以用Android ndk-stack tool
来查看产生这个错误的原因,但是出错的时候我的Eclipse中没有看到有*号开始的那些提示信息我是用真机测试的,在工程目录下的jni文件夹下Application.mk中添加 APP_OPTIM := debug,我的C文件是用NDK-BUILD编译的
if (play->m_vo_ctx)
{
LOGE("before free_video_render1 exist!!");
free_video_render(play->m_vo_ctx);
LOGE("after free_video_render1 exist!!");
play->m_vo_ctx = NULL;
} if (bFreeThread)
{
bFreeThread = FALSE;
JavaVM *av2_vm = av_get_jvm();
(*av2_vm)->DetachCurrentThread(av2_vm);
LOGE("DetachCurrentThread 3 exit!!");
}
LOGE("video_render_thrd exist!!");当打印完after free_video_render1 exist!!后就抱错了,但是后面的DetachCurrentThread 3 exit!!跟video_render_thrd exist!!还在继续打印,如上图所示,测试了很多次,报这个错误的时候有可能在打印完av_stop 3跟av_stop 4之间,或者其它的打印信息之间,但是这两句打印信息之间并没有什么错误,所以都不知道怎么确定到底是哪里的代码出了问题了
Eclipse 中的log要选 All messages,不能采用过滤,不然就看不到了。最好直接用 adb logcat 来抓,这样比较全
Eclipse 中的log要选 All messages,不能采用过滤,不然就看不到了。最好直接用 adb logcat 来抓,这样比较全
前辈说的adb logcat是指的什么?我可以试试看
Eclipse 中的log要选 All messages,不能采用过滤,不然就看不到了。最好直接用 adb logcat 来抓,这样比较全
adb logcat是在Eclipse中设置么
选择All messages确实可以看见这个,我的动态库文件是libavplayer.so,图片中选中的那一句是不是就是报的错误函数,工程中确实也有update_textures_with_yuv这个函数
那就是Eclipse中的LogCat了
Eclipse 中的log要选 All messages,不能采用过滤,不然就看不到了。最好直接用 adb logcat 来抓,这样比较全
我已经吧这些错误导出成了一个TXT文件,然后按照这个方法执行
$NDK/ndk-stack -sym $PROJECT_PATH/obj/local/armeabi -dump log.txtlog.txt是导出的出错文件,我吧这个文件放到了NDK目录下面,然后在NDK中执行
ndk-stack -sym E:/myEclipseWorkPlace/Android_855play/obj/local/armeabi -dump log.txt分析出来的结果跟程序一点关系都没有
如何定位很明显,挂掉的地方在libavplayer.so 定位00140160即可知道 哪一行出问题
谢谢前辈的指点,用这个命令确实可以
addr2line -e E:/myEclipseWorkPlace/Android_855play/obj/local/armeabi/libavplayer.so 00140160不过不知道为什么,我用Android ndk-stack,定位不了