`
runfeel
  • 浏览: 905673 次
文章分类
社区版块
存档分类
最新评论

手游开发知识(三)--NDK联机调试

 
阅读更多

转发,请保持地址:http://blog.csdn.net/stalendp/article/details/8807603

做NDK开发的时候,调试是比较头疼的事情;但是没有调试,有些具体的错误就无法了解。这里我流水似的介绍一下在真机下的ndk调试方案,以下是我的笔记:

NDK进行调试的时候,遇到了几个问题:

1) 需要对Android手机有root权限来设置执行一些命令

2)配置ndk-build

3)配置adbserver

4)配置adb client


调试的整体流程:

在进行调试之前,ndk-adb脚本要从手机上获取一些文件来做调试前准备(bug a);之后,将建立一个远程调试构架来调试应用程序。其中服务器端(adbserver)负责与手机通讯,本地客户端(client)将通过服务器端调试手机程序。

=============

bug A)权限问题

=============

在调试准备阶段,ndk-adb脚步将从手机端获取相关信息,比如 1) 位于/data/data下的app信息;还有和机器相关的应用程序: gdb.setup, app_process 和 libc.so 等文件(通过查看ndk-adb的执行日志,后两个文件分别位于手机的/system/bin 和 /system/lib下);这些目录都默认都是root的,为了在调试时能够访问,需要修改root权限为system。不然会产生如下的错误:run-as: Package 'com.example.tttt' has corrupt installation

解决方案:修改权限。

-------

sss$ adb shell

$ su

# chmod 771 /data/data

# chown system.system /data/data

参考文章:http://stackoverflow.com/questions/4873124/android-native-debug-ndk-gdb-on-htc-desire-run-as-flaw

=============

bug B)没有调试信息的问题

=============

需要在编译阶段,在ndk-build命令上加参数“NDK_DEBUG=1”

错误消息为:Verify if the application was built with NDK_DEBUG=1

具体为:打开工程的properties,修改如下图(去掉Use Default build command,在build Command中加入相关参数):

参考文章:http://tools.android.com/recent/usingthendkplugin


=============

bug C)配置远程调试--server端

=============

就是使用系统的脚本进行,命令为:

ndk-gdb--verbose --force --start --project <project/dir> --adb=/Applications/adt-bundle-mac/sdk/platform-tools/adb

建立Eclipse工具,如下图所示:


=============

bug D)配置远程调试--client端

=============

在配置client端时,有5个变量要提供;项目名称,gdb的实际位置,本地server的端口号;还有两个是运行ndk-adb进行调试准备阶段的产物(请参考bug A中的描述,分别为:gdb.setup, app_process; 因为client端只需要跟本地的server通讯,需要把gdb.setup拷贝一份,并把最后一行“target remote :5039”去掉。

具体请参考文章结尾的参考资料。

图例如下:






==============

关于对手机的root

==============

最后关于手机刷机的技术,HTC G7需要用到的软件为: unrevoked v3.2.0.92_0.93(需要跟手机的nboot匹配)。

具体请参考http://unrevoked.com/rootwiki/doku.php/public/windows_hboot_driver_install

具体请参考 NOTE:HTC刷机

关于Eclipse中配置JNI开发环境,请参考NOTE: NDK在Eclipse中的集成开发

》》参考资料

配置NDK环境:http://www.eclipse.org/sequoyah/documentation/native_debug.php

书籍:《Android NDK Beginner's Guide》的最后一章: Chapter11 Debugging and Troubleshooting


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics