创建的库才可以用来ndk-gdb。
简单摸索了一下ndk-gdb的使用方法,以供参考:
1. 使用ndk-build创建出库文件,并上传至开发板。
2. 用eclipse创建一个调用该库的android工程。
注意: 库文件中必须包含jni 定义的C文件,并且必须严格按照jni规则,与java
文件中的包,类,方法名一致。
3. 用eclipse在device上跑起来,(不管成功失败,至少与库链接通过)。
4. ndk目录的下一级目录,如sample/xxx ,找到bin目录,在bin目录中执行ndk-gdb --start。
5. 如果提示需要adb支持,将adb工具的目录设置到PATH。
6. 如果start以后,一闪而过,表示程序已经结束,没合适的时机加断点,需要在java代码中
加入android.os.Debug.waitForDebugger();表示在java代码中暂停,等待debug。也可以在
eclipse中的java代码上打断点,再start ndk-gdb 。
7. 重新ndk-gdb --start应该会出现
========================================================
warning: Unable to find dynamic linker breakpoint function.
GDB will be unable to debug shared library initializers
and track explicitly loaded dynamic code.
0xafd0eb58 in __futex_syscall3 ()
from /home/louyong/android-ndk-r5c/dvb/jb_his/obj/local/armeabi/libc.so
(gdb)
=======================================================
就可以打断点和调试。O(∩_∩)O~
注意:如果在eclipse在windows上,而ndk开发包在linux上。最好不要同时connect设备,貌似会有问题。
貌似这个gdb还不太稳定,有时候需要等待较长时间才有反应,有时候也会出很奇怪的问题,比如不能next,多试几次吧。