一、编译Android gdbserver(非必须)
因手头Android 2.3源码编译后的版本执行gdbserver时报错:Segmentation fault,不得不重新编译gdbserver。
1、编译gdbserver
编译过程参考博文:自己编译Android
gdbserver(解决运行 gdbserver时 Segmentation fault 问题)。
2、使用新编译的gdbserver替换原有版本gdbserver
simba@simba-Vostro-3400:~/neptune/android_2.3$ adb push ~/gdb_build/install/gdbserver /system/bin
二、使用带调试符号表的C/C++程序替换原有程序
simba@simba-Vostro-3400:~/neptune/android_2.3$ adb push out/target/product/xxxx/symbols/system/bin/debug_demo /system/bin
三、使用gdbserver调试android C/C++程序
1、gdbserver attach被调试程序
方法一:adbshell中以gdbserver参数的形式执行被调试程序
simba@simba-Vostro-3400:~/neptune/android_2.3$ adb shell gdbserver :5039 /system/bin/debug_demo &
[3] 17600
simba@simba-Vostro-3400:~/neptune/android_2.3$ Process /system/bin/debug_demo created; pid = 3323
Listening on port 5039
方法二:adbshell中执行被调试的程序,ps命令查看其PID并gdbserver attach
simba@simba-Vostro-3400:~/neptune/android_2.3$ adb shell /system/bin/debug_demo &
[3] 22614
simba@simba-Vostro-3400:~/neptune/android_2.3$ adb shell ps | grep /system/bin/debug_demo
root 3353 3352 1048 412 800cc220 6fd0bdac S /system/bin/debug_demo
simba@simba-Vostro-3400:~/neptune/android_2.3$ adb shell gdbserver :5039 --attach 3353 &
[4] 26856
simba@simba-Vostro-3400:~/neptune/android_2.3$ Attached; pid = 3353
Listening on port 50392、调试端口映射,把设备的5039端口映射到PC的5039
simba@simba-Vostro-3400:~/neptune/android_2.3$ adb forward tcp:5039 tcp:5039
设定之后用netstat -na命令可看到PC的5039端口已处于listen状态
simba@simba-Vostro-3400:~/neptune/android_2.3$ netstat -na | grep 5039
tcp 0 0 127.0.0.1:5039 0.0.0.0:* LISTEN
3、gdb客户端命令行调试
simba@simba-Vostro-3400:~/neptune/android_2.3$ /home/simba/neptune/android_2.3/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gdb ./out/target/product/xxxx/symbols/system/bin/debug_demo
(gdb) set solib-absolute-prefix ./out/target/product/xxxx/symbols/system/bin/
(gdb) set solib-search-path ./out/target/product/xxxx/symbols/system/bin
这里的gdb的版本一定要正确。这时已经进入了gdb调试模式,还需要进行与远程的gdbserver进行连接,在gdb模式下输入:
(gdb) target remote :5039
4.开始愉悦的调试吧
四、后记
用命令行调试比较繁琐,习惯使用Eclipse参考:用 Eclipse +
GDB调试Android中C/C++程序
--
参考文章:
GDB 命令详细解释
用Eclipse开发与调试纯粹的Android C++程序,非ndk-build、ndk-gdb
GDB: The GNU Project Debugger
分享到:
相关推荐
绍GDB命令行调制器调试C\C++程序。
linux新手GDB入门,以c/c++为例,讲解GDB常用的操作。。。。。。
分享一套课程——Linux GDB C/C++调试基础与提升视频课程,提供源码+PPT下载。
linux c/c++ gdb调试手册
用GDB调试程序 用GDB调试程序 用GDB调试程序 用GDB调试程序 用GDB调试程序 用GDB调试程序
Linux GDB C/C++调试基础与提升视频教程分享,视频+源码+PPT下载 一、gdb的概述 gdb是GNU开源组织发布的一个强大的UNIX下的程序调试工具。 二、gdb的使用场景 启动你的程序,可以按照你的自定义的要求随心所欲的...
GDB 是GNU 开源组织发布的一个强大的 UNIX 下的程序调试工具。或许,各位比较喜欢那种图形界面方 式的,像VC、BCB 等IDE 的调试,但如果你是在 UNIX 平台下做软件,你会发现 GDB 这个调试工具有 比VC、BCB 的图形化...
陈浩-用GDB调试程序(整理有书签).pdf+守望的个人博客-GDB调试指南(整理有书签).pdf
在unix中用GDB调试程序。 从CSDN的网站上找到的GDB使用说明。 原文标题:用GDB调试程序 作者:haoel (QQ是:753640,MSN是: haoel@...关键字:gdb 调试 c c++ gun 这篇文章非常好,所以转载了下来,作为收藏。
Eclipse+CDT+GDB调试android NDK程序
gdb 是 Linux 上广泛使用的调试工具,它提供了强大的命令行功能,使我们可以在程序运行时插入断点并在断点处执行其他函数。具体的文档请参照 http://www.gnu.org/software/gdb/,本文中将只对用到的几个基本功能进行...
这个版本是可以用的,但是要装python2.7,我试了py3是不行的,只能装2.7了,如果少dll的话 去网上下就行
linux 用GDB调试C和C++程序,这个文档是我从http://wiki.ubuntu.org.cn/index.php?title=用GDB调试程序&variant=zh-cn 上面复制,然后进行编辑之后,为了方便我的打印,我编辑好了的,如果没有积分可以去这个网站...
GDB调试GDB调试GDB调试GDB调试GDB调试 GDB调试GDB调试GDB调试GDB调试GDB调试
GDB调试程序[陈皓] GDB调试工具指南 两个pdf文件
这些插件将 C/C++ 透视图添加到 Eclipse 工作台(Workbench)中, 现在后者可以用许多视图和向导以及高级编辑和调试支持来支持 C/C++ 开发。 由于其复杂性,CDT 被分成几个组件,它们都采用独立插件的形式。 每个...
用GDB调试程序
GDB(GNU symbolic debugger)简单地说就是一个调试工具。...在你调试你的程序之前,当你编译你的源程序时,不要忘了 -g 选项或其它相应的选项,才能将调试信息加到你要调试的程序中。例如:gcc -g -o hello hello.c 。