[Android] ndk-gdb 사용법 IT

project 셋팅

AndroidManifest.xml

Application 항목에 android:debuggable="true" 속성 추가

<application ... android:debuggable="true">

adb path 설정

아래와 같이 하면 .bashrc 파일 내 공백문제 없이 입력가능? => 확인안됨
export $PATH:'/cygdrive/c/Program Files/Android/android-sdk/platform-tools/'

.bashrc 파일 내 아래 내용 추가 시 Program Files 공백문제로 인해 문제발생 소지가 있음
따라서 아래 내용은 cygwin 상에서 직접 입력

export $PATH:/cygdrive/c/Program\ Files/Android/android-sdk/platform-tools/

ndk-gdb --adb=../../Android/android-sdk/platform-tools/adb.exe

이후 계속적인 path 문제 발생으로 인해 결국 sdk 위치 변경


emulator -partition-size <size> -avd test233


ndk-gdb 사용을 위한 삼성 갤럭시S2 루팅

커널 종류가 많다.
제일 쉬운 방법은 다운로드 만으로 루트권한을 얻을 수 있는 경량의 테그라크 커널을 이용하는 것이다.
pspmaster.tistory.com 에서 통신사와 빌드버전을 확인 후 다운받는다. build 23 이 진저브레드 EE31 이다.
오딘을 통해 빌드하도록 한다.
만약의 경우를 대비해 아래의 주소에서 순정커널도 받아놓도록 한다.
http://matpclub.com/s/pxeboard31/3140167 ( 스마트폰 커널 커뮤니티로는 맛클이 유명하다 )


run-as 에서의 문제로 인해(pkg 용량과 관련된 buffer or permission ?)

아래와 같이 수정 필요

--- ndk-gdb 2011-02-24 16:55:07.000000000 +0900
+++ ndk-gdb-root 2011-06-09 08:35:04.000000000 +0900

@@ -465,7 +465,7 @@
 log
"Using app out directory: $APP_OUT"

 
# Find the <dataDir> of the package on the device
-DATA_DIR=`adb_shell run-as $PACKAGE_NAME /system/bin/sh -c pwd`
+DATA_DIR="/data/data/$PACKAGE_NAME"
 log
"Found data directory: '$DATA_DIR'"
 
if [ $? != 0 -o -z "$DATA_DIR" ] ; then
     echo
"ERROR: Could not extract package's data directory. Are you sure that"
@@ -543,7 +543,7 @@

 
# Launch gdbserver now
 DEBUG_SOCKET
=debug-socket
-run $ADB_CMD shell run-as $PACKAGE_NAME lib/gdbserver +$DEBUG_SOCKET --attach $PID &
+run $ADB_CMD shell "(cd $DATA_DIR; lib/gdbserver +$DEBUG_SOCKET --attach $PID)" &
 
if [ $? != 0 ] ; then
     echo
"ERROR: Could not launch gdbserver on the device?"
     
exit 1


원문참조
http://stackoverflow.com/questions/6158953/running-ndk-gdb-with-package-not-found-error-on-motorola-phone
http://code.google.com/p/android/issues/detail?id=16391
http://code.google.com/p/android/issues/detail?id=13965

덧글

댓글 입력 영역


SBS 라디오 파워FM