用 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++源码链接到工程中,方便查看。三、编译并安装将被调试的程序
这是基本工作,无须多言
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