のねのBlog

パソコンの問題や、ソフトウェアの開発で起きた問題など書いていきます。よろしくお願いします^^。

手動でgdb

$ ndk-gdb --verbose

サーチパスがセットされていても、シンボルが読み込めていない。

(gdb) show solib-search-path
.he search path for loading non-absolute shared library symbol files is ./obj/local/armeabi

シンボルが読み込めていないときの例

(gdb)info functions
All defined functions:

Non-debugging symbols:
0x00008c00 __aeabi_llsl
0x00008c1c __popcountdi2

シンボルが読み込めているときの例。

info function
All defined functions:

File /tmp/ndk-digit/src/build/../gcc/gcc-4.4.3/libgcc/../gcc/config/arm/unwind-arm.c:
File /tmp/ndk-digit/src/build/../gcc/gcc-4.4.3/libgcc/../gcc/config/arm/pr-support.c:
File D:/Users/m_fujii/Documents/69_HelloJni/trunk/workspace/HelloJni/jni/hello-jni.c:
jstring Java_com_example_hellojni_HelloJni_stringFromJNI(JNIEnv *, jobject);

Non-debugging symbols:
0x00008c00 __aeabi_llsl
0x00008c1c __popcountdi2
0x4005afd0 _exit
0x4005afec _exit_thread
〜略〜
0x400887c8 bcopy
0x400888d4 strncmp
0x58724c18 __on_dlclose

サーチパスのセット

(gdb)set solib-search-path ./obj/local/armeabi
〜略〜
Reading symbols from HelloJni/./obj/local/armeabi/libhello-jni.so...done.
Loaded symbols for HelloJni/./obj/local/armeabi/libhello-jni.so
〜略〜

(gdb) p Java_com_example_hellojni_HelloJni_stringFromJNI
$1 = {jstring (JNIEnv *,
    jobject)} 0x58724c28 <Java_com_example_hellojni_HelloJni_stringFromJNI>
(gdb) break *0x58724c28
Breakpoint 1 at 0x58724c28: file D:/Users/m_fujii/Documents/69_HelloJni/trunk/workspace/HelloJni/jni/hello-jni.c, line 29.
(gdb) c
Continuing.
[New Thread 28092]
[Switching to Thread 28092]

Breakpoint 1, Java_com_example_hellojni_HelloJni_stringFromJNI (env=0xf2c0,
    thiz=0x128d0)
    at D:/Users/m_fujii/Documents/69_HelloJni/trunk/workspace/HelloJni/jni/hello-jni.c:29
29      {
(gdb)