用 Eclipse + GDB调试Android中C/C++程序

fmms 13年前

一、前期准备


1、编译通过的Android源代码(我是Android 2.3)


2、安装了CDT的Eclipse


3、重新编译Android gdbserver(非必须)

        因手头Android 2.3源码编译后的版本执行gdbserver时报错:Segmentation fault,不得不重新编译gdbserver。参考博文:自己编译Android gdbserver(解决运行 gdbserver时 Segmentation fault 问题)



二、建立Eclipse C/C++工程

        这里的C/C++工程属性可随意选择,目的是为了用Eclipse编辑和调试,不需要Eclipse做编译工作。建立好工程后可以将部分Android C/C++源码链接到工程中,方便查看。


三、编译并安装将被调试的程序


1、撰写Android.mk,Andriod源码下编译获得可执行文件或动态库
这是基本工作,无须多言

2、使用带调试符号表的C/C++程序替换原有程序
simba@simba-Vostro-3400:~/neptune/android_2.3$ adb push out/target/product/xxxx/symbols/system/bin/debug_demo /system/bin
</span>
3、在Eclipse Debug Configurations中新建C/C++ Remote Application
在Main标签页中设置:
C/C++ Application:
/home/simba/neptune/android_2.3/out/target/product/xxxx/symbols/system/bin/debug_demo</span>
</span>Project:
(将要调试的代码对应工程)
Connection:
local
Remote Absolute File Path : 
/system/bin/debug_demo
</span>Commands to execute before application:
/opt/android/sdks/r15/platform-tools/adb shell gdbserver :5039 /system/bin/debug_demo
/opt/android/sdks/r15/platform-tools/adb forward tcp:5039 tcp:5039
</span>注意,这里的adb路径一定要完整路径选中 “Skip download to target path”</span>

在Debugger标签页中设置:
GDB debugger(与gdbserver对应的gdb的路径):</span>
/home/simba/neptune/android_2.3/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gdb
</span>

GDB command file:

暂时置空

Gdbserver Settings:
Gdbserver name:gdbserver</span>

Portnumber:5039


4、开始愉悦地调试吧


--

参考文章:

用Eclipse开发与调试纯粹的Android C++程序,非ndk-build、ndk-gdb

来自:http://blog.csdn.net/yuleslie/article/details/7249874