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

被这个问题卡了我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中调用它。

时间: 2024-11-10 13:08:53

Eclipse下用NDK调试C/C++代码碰到 No Symbol table is loaded的相关文章

【eclipse下使用git上传(下载)代码至(从)github】

eclipse下使用git插件上传代码至github 1.eclipse下安装git 正常情况下,eclipse 是自带 git 插件的,那么即可跳至步骤1的最后一小步,配置 git . 如果十分悲剧,你的 eclipse 中见不到 git 的身影,那么也没关系,安装一个 git 插件就行了.eclipse 安装插件的方法有好几种,此处选取最常见的一种介绍 git 插件的安装. 点击 Help->Install New Software->add. 输入插件名称(自定义),以及插件地址(htt

eclipse下使用git上传(下载)代码至(从)github

eclipse下使用git插件上传代码至github 1.eclipse下安装git 正常情况下,eclipse 是自带 git 插件的,那么即可跳至步骤1的最后一小步,配置 git . 如果十分悲剧,你的 eclipse 中见不到 git 的身影,那么也没关系,安装一个 git 插件就行了.eclipse 安装插件的方法有好几种,此处选取最常见的一种介绍 git 插件的安装. 点击 Help->Install New Software->add. 输入插件名称(自定义),以及插件地址(htt

eclipse+minGW 调试ffmpeg错误:No symbol table is loaded. Use the "file" command.

转载地址:http://www.blogjava.net/fancydeepin/archive/2012/11/19/391520.html 数据结构第二篇:  eclipse SDK 安装和配置 GDB 为 C/C++ 开发环境提供 debug 调试背景:  debug 的时候出现 Error while launching command: gdb.exe --version 异常原因:  没有安装 gdb 调试工具.听说,最新的 MinGW 已集成 GDB 调试工具,本人安装的 MinG

解决GDB调试时“ No symbol table is loaded. Use the "file" command”问题

1.解决的办法 : GDB调试时使用list命令时出现 “No symbol table is loaded. Use the "file" command”提示,其实是C编译器的选项CFLAGS没有设置好,gcc -o进行编译时不用不用写“-g”选项,只需在makefile文件开头写上“CFLAGS = -g”在编译时编译器就会自动使用CFLAGS的设置了. 2.探索的过程: 我的makefile文件是这样编写的: “make clear”.“make main”.“gdb main

Eclipse下用NDK编译生成so文件

我们在安装环境的时候安装了NDK,可以在eclipse下直接生成so文件.NDK的压缩包里面自带了一些sample工程,NDK的文件直接解压到某个目录下即可. 第一次生成so文件的时候,我们先使用NDK的sample下的hello-jni的例子. 1.启动eclipse,通过Create project  from existing source,选择hello-jni的目录,按默认选项创建工程即可: 2.观察hello-jni的工程目录结构,发现根目录下多了一个名叫jni的文件夹,该文件夹下面

原生Eclipse下Java服务器调试的一个问题

当你对Server的配置修改以后,最好到 workspacedir\.metadata\.plugins\org.eclipse.wst.server.core\tmp0目录下把缓存文件给删除了,否则可能会导致你的发布的文件怎么搞都和程序文件不一致. 参考:http://hi.baidu.com/nxdl/blog/item/7e40e51965c97e6adab4bd90.html

解决gdb调试报错“No symbol table is loaded. Use the "file" command.”

linux下写的Makefile,然后编译成文件,gdb调试的时候用list命令报错.搞了半天,在网上找了很多,说是一定要用-g, 然而我是添加的,后来又有人说是需要把-g写调宏定义CFLAGS = -g,但是还是不对.最后经过自己的摸索,才发现,如果 是.c的文件,用CFLAGS是可以的,但是如果是.cpp文件,则必须使用CPPFLAGS = -g才可以 贴上代码如下 CPP = g++ ##这里用gcc或者是g++都没有影响 CPPFLAGS = -g# -D_REENTRANT -DDEB

cygwin+ndk+eclipse下JNI技术入门

1.JNI的编写步骤1)编写带有native 声明的java类.2)编译java文件成class类3)使用javah -jni com.ikags.project.XXXX 编译成.h文件4)使用C/C++编写代码5)编写makefile文件,将.h和.c(.cpp)文件编译成.dll(.so)文件6)将.dll(.so)文件提供给项目,用system.loadLibrary方法调用. 2.编写makefile文件make执行时,自动寻找Makefile(makefile)文件,然后执行编译工作

【Java】使用Eclipse进行远程调试,Windows下开启远程调试

原博链接:http://blog.csdn.net/sunyujia/article/details/2614614 今天决定做件有意义的事,写篇图文并茂的blog,为什么要图文并茂?因为很多事可能用语言也说不明白,从以前我发表的一篇文章可以看得出来,http://blog.csdn.net/sunyujia/archive/2008/03/23/2211109.aspx 我的朋友们普通反应看完后觉得不知所云,可能是我写的太简单,下面步入正题. 什么是远程调试,就是在A机器上利用Eclipse单