最近在项目中碰到在特定手机上会卡住问题,初步怀疑是c++层的模块产生的。所以要在真机上调c++,如果是个cocos2d-x c++的项目还比较好调,但quick就有点麻烦了。试了几种方式都没成功。最后终于找到一个相对来说简单的方法。
1.首先被调试的手机必须是root过的。
2.将quick工程导入到eclipse。路径:%项目目录%\frameworks\runtime-src\proj.android
3.将cocos2dx的java工程做为library导入eclipse。路径:%项目目录%\frameworks\cocos2d-x\cocos\platform\android\java 4.用player或者build_apk.bat编译带debug信息apk 5.在eclipse中选中自己quick项目,将debug版本的应用安装到目标设备上。这步的目的其实就是将程序和debug需要的文件gdb.setup,gdbserver安装到设备上。本来可以用 ant debug install,但那样很麻烦。这步可能会报 "miss androidmanifest.xml",错误。不过只要稍微修改下此文件,再改回去,然后保存,就不会再报这个错了。 6.将ndk路径加入到环境变理的path目录中 7.打开命令行窗口,并进入到 %项目目录%\frameworks\runtime-src\proj.android 8.打开build_native_release.bat 将 最后的 NDK_MODULE_PATH 设置到 环境变量中。或者建个批处理 ndk-gdb-env.bat 保存在proj.android目录,内容是 @echo off set DIR=%~dp0 set APP_ROOT=%DIR%..\..\..\ set APP_ANDROID_ROOT=%DIR% set COCOS2DX_ROOT=%DIR%\..\..\cocos2d-x SET NDK_MODULE_PATH=%APP_ANDROID_ROOT%;%COCOS2DX_ROOT%;%COCOS2DX_ROOT%/cocos;%COCOS2DX_ROOT%/external;%COCOS2DX_ROOT%/cocos/scripting;%APP_ANDROID_ROOT%/../Classes @echo %NDK_MODULE_PATH% 运行这个批处理就好了。 9. 运行 ndk-gdb.py。接下来就可以调试了。 --------------------------------------------- 注意: 1.gdb连接时,可能会超时,需要多连几次 2.不知道为什么,gdb的说明里说:ctrl-c 可以中断程序,但在我的机器上是不行的。所以我另起一个命令行。用adb shell进入到设备的控制台。并用 "kill -s SIGINT 进程号" 向gdb发送中断信号 3.在进行第8步时,可能会出现./obj/local/armeabi/app_process: No such file or directory。只需要 adb pull /system/bin/app_process ./obj/local/armeabi/app_process 就可以了。 ---------------------------------------------