码迷,mamicode.com
首页 > 编程语言 > 详细

Eclipse下用NDK调试C/C++代码碰到 No Symbol table is loaded

时间:2015-08-02 21:23:36      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:

被这个问题卡了我3天,终于搞清楚了原因。网上对这个问题也有各种解决方案:有的说需要增加编译参数-g;有的说写个test方法,先调用一下;有的说修改gdb.setup文件,确保是unix回车符。基本都属于胡扯的。
先说说环境:
Windows 7、Eclipse Juno 4.2.2、CDT 8.1.2、ADT 23、NDK r10d、Python 3.4。不要提什么cygwin,NDK r10d已经不需要它了,改用Python了。搞定这些环境真不易啊,还得FQ才行。

错误描述:
整个编译运行没问题的前提下,在C\C++代码中加断点,运行时不能断住,加断点时日志提示“No symbol table is loaded.  Use the "file" command.”。

测试用JNI类:
public class MyTest {
 static {
  System.loadLibrary("jnitest");
    }
 public static native String test();
}

错误原因:
受NDK里Sample的影响,System.loadLibrary()做成了static,放在了JNI类里。JAVA在调用static块的时机是首次使用该类,也就是首次调用test方法的时候,我的App中,是在一个菜单item中调用的test方法。但是,ndk-gdb是在应用首次运行后,调用gdb.setup设定调试环境的,目前看,仅配置这一次。也就是说ndk-gdb配置调试环境时,JAVA虚拟机还没有loadLibrary,以后又不再进行配置,于是就产生了以上的错误。

解决方法:
将System.loadLibrary("jnitest");封装到一个static方法中,在onCreate中调用它。

Eclipse下用NDK调试C/C++代码碰到 No Symbol table is loaded

标签:

原文地址:http://www.cnblogs.com/lanrenxinxin/p/4696592.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!