设为首页 加入收藏

TOP

使用hello-gl2建立ndk-gdb环境(有源码和无源码调试环境)(一)
2014-11-24 03:19:55 来源: 作者: 【 】 浏览:1
Tags:使用 hello-gl2 建立 ndk-gdb 环境 源码 调试

使用hello-gl2建立ndk-gdb环境(有源码和无源码调试环境)


2,编译libgl2jni.so,使用参数NDK_DEBUG=1


使用hello-gl2建立ndk-gdb环境(有源码和无源码调试环境)


3,打开eclipse,导入工程到eclipse

在左边packages栏,点击鼠标右键,选择import


选择Existing Projects into Workspace,点击next



选择Browse,指定hello-gl2的目录



4,单击finish完成导入


5,为了调试方便我们对代码稍做修改

GL2JNILib.java去掉System.loadLibrary("gl2jni");


GL2JNIActivity.java添加如下代码

Log.e("zcfdebug", "Now we will wait for 5 s");

try {

Thread.sleep(5000);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}


Log.e("zcfdebug", "Now we finish waiting for 5 s");

super.onCreate(icicle);



6,连接上设备,运行试试看。


7,运行../../ndk-gdb --verbose --launch=com.android.gl2jni.GL2JNIActivity



8,设置断点,br Java_com_android_gl2jni_GL2JNILib_init


9,按C继续运行,可以看出,程序已经停在我们需要停止的地方。



至此,环境完全搭建完成,你可以像本地一样的调试程序了。



这是有源码的情况,如果没有源码怎么办?Dos下面,我们可以使用debug xxx.exe,Android下面可以吗。答案是肯定的,我们只需要做一些工作来欺骗ndk-gdb脚本就可以了。


1,在sample目录下建立一个test目录,把hello-gl2目录下的最终apk文件copy到test目录下


2,使用apktool解包GL2JNIActivity.apk


3,把目录GL2JNIActivity拷贝到上一级目录下面


4,修改AndroidManifest.xml,添加


5,重命名lib目录为libs



6,从hello-gl2/libs/armeabi/目录下拷贝gdb.setup和gdbserver两个程序到test/libs/armeabi/


7,建立./obj/local/armeabi目录,并cp libs/armeabi/libgl2jni.so obj/local/armeabi/



8,伪装jni目录,从任意sample目录下copy jni目录过来都可以。


9,完成之后,安装程序adb install GL2JNIActivity.apk

10,把目标机/data/data/com.android.gl2jni/lib目录属性改为可读写,要试具体机器实施

1)adb shell

2)Shell下执行mount

root@android:/ # mount

rootfs / rootfs ro,relatime 0 0

tmpfs /dev tmpfs rw,nosuid,relatime,mode=755 0 0

devpts /dev/pts devpts rw,relatime,mode=600 0 0

proc /proc proc rw,relatime 0 0

sysfs /sys sysfs rw,relatime 0 0

debugfs /sys/kernel/debug debugfs rw,relatime 0 0

none /acct cgroup rw,relatime,cpuacct 0 0

tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0

tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0

none /dev/cpuctl cgroup rw,relatime,cpu 0 0

emmc@android /system ext4 ro,noatime,user_xattr,commit=1,barrier=1,nodelalloc,data=journal,noauto_da_alloc 0 0

emmc@usrdata /data ext4 rw,nosuid,nodev,noatime,user_xattr,barrier=1,data=ordered,noauto_da_alloc 0 0

emmc@cache /cache ext4 rw,nosuid,nodev,noatime,user_xattr,barrier=1,data=ordered,noauto_da_alloc 0 0

/dev/block/vold/179:4 /mnt/sdcard vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0

/dev/block/vold/179:4 /mnt/secure/asec vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0

tmpfs /mnt/sdcard/.android_secure tmpfs ro,relatime,size=0k,mode=000 0 0

/dev/block/dm-1 /mnt/asec/com.example.hellojni-1 vfat ro,dirsync,nosuid,nodev,relatime,uid=1000,fmask=0222,dmask=0222,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0

/dev/block/dm-0 /mnt/asec/com.android.gl2jni-1 vfat ro,dirsync,nosuid,nodev,relatime,uid=1000,fmask=0222,dmask=0222,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0


3)mount -o rw,remount /mnt/asec/com.android.gl2jni-1

4)chmod 777 /mnt/asec/com.android.gl2jni-1

11,把gdbserver push到/data/data/com.android.gl2jni/lib

adb push ./libs/armeabi/libgl2jn

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇移植uCOS-II到Cortex-M3平台 下一篇Gdb+gdbserver无源码调试Android ..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C语言中如何将结构体 (2025-12-24 22:20:09)
·纯C语言结构体成员变 (2025-12-24 22:20:06)
·C语言中,指针函数和 (2025-12-24 22:20:03)
·哈希表 - 菜鸟教程 (2025-12-24 20:18:55)
·MySQL存储引擎InnoDB (2025-12-24 20:18:53)