Win7下Debug native操作
環境配置:
1,Eclipse : Indigo 3.7
2,ADT : r22.0.1
3,ndk : r9
4,安裝Cygwin與配置ndk:
Cygwin爲在windows平臺上運行的類UNIX模擬環境,安裝可以參考網上教程及配置ndk“環境變量”;
5,CDT :
先查看一下已下載的eclipse是否包括cdt.插件,工具欄Help—>About Eclipse:如圖
;
若沒有可以進行在線安裝,點擊 Help->Install New Software…彈出的窗口中的Work With中添加http://download.eclipse.org/tools/cdt/releases/indigo,按回車,接 下 來的安裝過程和上文中安裝中文包的是一樣的,我相信你很容易就能明白的。如果你的Eclipse版本不是3.7,而是別的版本的,那麼請上http://www.eclipse.org/cdt/downloads.php,查詢對應的CDT版本,複製相應的p2 software repository到Work With窗口中,安裝完成後重啓eclipse,無需任何動作,你就能編譯C++的程序了.
6, sequoyah插件:
Sequoyah插件用於設置Android工程對Native開發的支持. 點擊Help->Install New Software… 彈出的窗口中的Work With中添加:如圖
在安裝界面不要勾選“Group items by category”複選框,默認是勾選的,出現了列表爲空(There are no categorized items)的情況
上面jni編譯環境步驟比較多,大家可以從網絡查看有詳細的教程;
Eclipse 編譯:
可以使用ndk提供的samples,使用的eclipse的工具欄Import… 進行工程導入;導入的工程爲hello-jni,工程目錄如下;
注意: AndroidManifest.xml 設置屬性 android:debuggable="true" ,
把當前工程轉換爲c/c++工程有兩種方式:
1, 右擊工程,彈出工具欄選擇Android Tools—>Add Natvie Support…
會自動跳轉到c/c++視圖,工程目錄如下:
2,把工程轉換爲c工程的,右擊工程彈出工具欄New—>Other—>
進行配置轉換;
配置工程Properties
工程點擊c/c++文件,會提示錯誤需要引入.h文件,右擊工程Properties,顯示下面截圖,Add添加.h文件
出現的問題:AndroidNDK: WARNING: There are no modules to build in this project!
修改:Android.mk文件需要去掉#
LOCAL_PATH := $(callmy-dir)
include$(CLEAR_VARS)
LOCAL_MODULE := hello-jni
LOCAL_SRC_FILES := hello-jni.c
include$(BUILD_SHARED_LIBRARY)
右擊工程Build Configuations—>Build All,編譯生成.so文件,可以在Console看到編譯成功。
調試
進行java debug
在調用native方法請打上斷點,先進行java debug運行工程,右擊工程彈出工具欄Debug As—>Android Application,
在cygwin 運行gdb,生成調試文件
1, 使用cygwin進入當前工程目錄下,然後運行ndk目錄下的ndk-gdb,生成用於調試的gdb文件,
Refresh工程看到對應的cpu類型下生成的文件app_process,gdb.setup
運行c/c++ dubug
配置c/c++ debug, 右擊工程Debug As—>Debug Configurations,
選擇C/C++ Aplication, Main標籤內C/C++ Application填寫設備下對應的app_process,文件,點擊下面的 Select other…,
點擊Debugger標籤,
Main標籤
GDB debugger :
ndk\android-ndk-r9c\toolchains\arm-linux-androideabi-4.6\prebuilt\windows-x86_64\bin\arm-linux-androideabi-gdb.exe;
GDB command file: 爲工程下\hello-jni\obj\local\armeabi-v7a\gdb2.setup;
gdb2.setup文件的生成是複製gdb.setup文件並修改文件名,需要去掉文件裏面
target remote :5039,進行保存
Connection標籤
設置type,及port number,
配置完成點擊Debug; eclipse會跳轉到debug視圖;然後進可以調試了
在debug 期間Cygwin會的顯示;