> Android在线手册 > Android NDK 开发教程七:调试

開發應用一個關鍵的步驟是調試,對於NDK的c++代碼調試有很多種方法,

  • 對於和Android平台相關性不大的部分代碼,可以單獨創建一個C/C++項目,編寫測試代碼,測試完成後,再編譯成NDK動態庫或靜態庫模塊。
  • 使用NDK-GDB,NDK-GDB的命令行調試方法和GDB類似,網路有很多關於GDB的教程
  • 使用Eclipse+CDT+GDB調試android NDK程序 實時調試,不過這種方法設置起來不是十分方便,調試起來需要在GDB和Eclipse之間來回切換,適合於有經驗的程序員。
  • 這裡介紹一個開發嵌入式系統調試的「終極工具:-)」-printf. 開發嵌入式系統調試常用的也是最簡單的方法,是使用printf 列印調試信息。

修改一下two-lib 的例子 ,使用first.c 中的first 函數實現一個加法計算器

Android NDK 开发教程七:调试這裡我們想在調用first(int x,int y) 顯示出傳入的x ,y 值。Android NDK 中提供了一個Log庫,其頭文件為android/log.h ,可以提供Androd Java代碼中的Log功能,也是可以在LogCat中列印信息。

具體方法如下:

1. 修改first.c ,添加合適的列印語句

#include "first.h"
#include <android/log.h>

int  first(int  x, int  y)
{
 __android_log_print(ANDROID_LOG_INFO, "MYPROG", "x = %d, y =%d", x,y);
 return x + y;
}

2. 修改android.mk 文件,添加需要鏈接的Log庫

LOCAL_PATH:= $(call my-dir)

# first lib, which will be built statically
#
include $(CLEAR_VARS)

LOCAL_MODULE    := libtwolib-first
LOCAL_SRC_FILES := first.c

include $(BUILD_STATIC_LIBRARY)

# second lib, which will depend on and include the first one
#
include $(CLEAR_VARS)

LOCAL_MODULE    := libtwolib-second
LOCAL_SRC_FILES := second.c
LOCAL_LDLIBS := -llog
LOCAL_STATIC_LIBRARIES := libtwolib-first

include $(BUILD_SHARED_LIBRARY)

然後就可以編譯Native C代碼,運行這個例子,可以在LogCat看到列印的信息:

Android NDK 开发教程七:调试本例下載