利用 GDB Debug Android SurfaceFlinger
来源:互联网 发布:移动oa 源码 编辑:程序博客网 时间:2024/06/05 09:46
gdbclient
相关文件:android-4.1.1_r1/build/envsetup.sh
function gdbclient(){ local OUT_ROOT=$(get_abs_build_var PRODUCT_OUT) local OUT_SYMBOLS=$(get_abs_build_var TARGET_OUT_UNSTRIPPED) local OUT_SO_SYMBOLS=$(get_abs_build_var TARGET_OUT_SHARED_LIBRARIES_UNSTRIPPED) local OUT_EXE_SYMBOLS=$(get_abs_build_var TARGET_OUT_EXECUTABLES_UNSTRIPPED) local PREBUILTS=$(get_abs_build_var ANDROID_PREBUILTS) local ARCH=$(get_build_var TARGET_ARCH) local GDB case "$ARCH" in x86) GDB=i686-android-linux-gdb;; arm) GDB=arm-linux-androideabi-gdb;; *) echo "Unknown arch $ARCH"; return 1;; esac if [ "$OUT_ROOT" -a "$PREBUILTS" ]; then local EXE="$1" if [ "$EXE" ] ; then EXE=$1 else EXE="app_process" fi local PORT="$2" if [ "$PORT" ] ; then PORT=$2 else PORT=":5039" fi local PID local PROG="$3" if [ "$PROG" ] ; then if [[ "$PROG" =~ ^[0-9]+$ ]] ; then PID="$3" else PID=`pid $3` fi adb forward "tcp$PORT" "tcp$PORT" adb shell gdbserver $PORT --attach $PID & sleep 2 else echo "" echo "If you haven't done so already, do this first on the device:" echo " gdbserver $PORT /system/bin/$EXE" echo " or" echo " gdbserver $PORT --attach $PID" echo "" fi echo >|"$OUT_ROOT/gdbclient.cmds" "set solib-absolute-prefix $OUT_SYMBOLS" echo >>"$OUT_ROOT/gdbclient.cmds" "set solib-search-path $OUT_SO_SYMBOLS:$OUT_SO_SYMBOLS/hw:$OUT_SO_SYMBOLS/ssl/engines" echo >>"$OUT_ROOT/gdbclient.cmds" "target remote $PORT" echo >>"$OUT_ROOT/gdbclient.cmds" "" $ANDROID_TOOLCHAIN/$GDB -x "$OUT_ROOT/gdbclient.cmds" "$OUT_EXE_SYMBOLS/$EXE" else echo "Unable to determine build system output dir." fi }
gdbclient.cmds包含如下信息:
set solib-absolute-prefix /local/r/android-4.1.1_r1/out/target/product/diablohd/symbolsset solib-search-path /local/r/android-4.1.1_r1/out/target/product/diablohd/symbols/system/lib:/local/r/android-4.1.1_r1/out/target/product/diablohd/symbols/system/lib/hw:/local/r/android-4.1.1_r1/out/target/product/diablohd/symbols/system/lib/ssl/enginestarget remote :5039
脚本用来生成所需的gdbclient.cmds:
- create_gdbclient_cmds.sh
#! /bin/bash P=${1}D=${2} if [ -z "${P}" -o -z "${D}" ] ; thenecho "usage: ${0} <path> <product>"echo " ${0} /local/projects/android-4.1.1_r1 diablo"exit 1fi cat << EOF > gdbclient.cmdsset solib-absolute-prefix ${P}/out/target/product/${D}/symbolsset solib-search-path ${P}/out/target/product/${D}/symbols/system/lib:${P}/out/target/product/${D}/symbols/system/lib/hw:${P}/out/target/product/${D}/symbols/system/lib/ssl/enginestarget remote :5039 EOF
$ adb forward tcp:5039 tcp:5039$ adb shell gdbserver :5039 --attach `adb shell ps surfaceflinger | grep surfaceflinger | awk '{ print $2 }'`
在另外一个terminal上执行:
$ cd /local/projects/diablo-china-v1.0-dint$ ./create_gdbclient_cmds.sh `pwd` jrdsh77_cu_jb$ prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gdb -x gdbclient.cmds out/target/product/jrdsh77_cu_jb/symbols/system/bin/surfaceflinger
- 利用 GDB Debug Android SurfaceFlinger
- 利用 GDB Debug Android SurfaceFlinger
- 关于gdb debug android
- android surfaceflinger
- use gdb on Android to debug mediaserver
- gdb debug
- gdb debug
- gdb debug
- gdb debug
- android surfaceflinger研究----SurfaceFlinger loop
- android surfaceflinger研究----SurfaceFlinger loop
- android surfaceflinger研究----SurfaceFlinger loop
- android surfaceflinger研究----SurfaceFlinger loop
- android surfaceflinger研究----SurfaceFlinger loop
- android surfaceflinger研究----SurfaceFlinger loop
- android surfaceflinger研究----SurfaceFlinger loop
- android surfaceflinger研究----SurfaceFlinger loop .
- android surfaceflinger研究----SurfaceFlinger loop .
- FLEX中的Session管理
- iphone游戏开发之cocos2d ( 十 )使用纹理图册,更方便生成精灵动画
- linux 进程查看命令
- Jtidy解析脚本时候出现StringIndexOutOfBoundsException异常问题
- Z-STACK之cc2530LED驱动详解
- 利用 GDB Debug Android SurfaceFlinger
- OpenCV 编程入门
- 自己收集的c语言学习网站
- android中用XMPP Asmack获取用户朋友的presence(名单列表)的实现
- JAVASCRIPT文件操作
- Android内存管理
- 杭电 2037
- 转一个写的非常好的四元数的论文
- 最新Android开发环境搭建4.0以上系统