Android环境下使用GDB
1) 编译包含Debug 信息
设置如下环境变量:
TARGET_BUILD_TYPE=debug
TARGET_STRIP_MODULE=false (发现即使设置编译为Debug模式, 最后生成的文件系统中的程序和库还是会被strip. 设置此选项可以避免被strip)不过还要需要修改一下build/core/combo/linux-arm.mk, 否者即使设置TARGET_STRIP_MODULE=false也无效
修改
113: TARGET_STRIP_MODULE:=true
为
ifeq ( $(strip $(TARGET_STRIP_MODULE)),,)
TARGET_STRIP_MODULE := true
endif
然后 make
2) 在板子上启动gdb server
gdb-server IP-address:Port 可执行程序
或者
gdb-server IP-address:Port --attach 程序的PID
(Note: IP-Address是目标板自己的IP地址, 此选项可以省略)
3) 在主机端
(前提: 进入 android 目录, 执行过 source build/envsetup.sh)
#gdbclient 在板子上执行的程序名称
(默认已经设置好如下信息, 无需自己设置
set solib-absolute-prefix /absolute-source-path/out/debug/target/product/product-name/symbols
set solib-search-path /absolute-source-path/out/debug/target/product/product-name/symbols/system/lib)
(gdb) target remote 板子的ip-address:port
(gdb) b main
(gdb) c
程序会停在main函数
http://xiaobo.spaces.live.com/blog/cns!5EC21DEE9B73C1A8!1385.entry
gdbserver现在的Android源码都会提供,可以直接用了,不过现在只能对可执行程序进行调试,还不能对so库进行调试