[1].终端目录设置到: proj.android
[2].make文件的编译选项加上: -g -gstabs+
[3].执行编译脚本: sh ./build_native.sh NDK_DEBUG=1
[4].将生产的gdbserver push到手机上,找个能写的目录: adb push ./libs/armeabi/gdbserver data/data/tmp
[5].启动app
[6].终端: adb shell
[7].终端: su
[8].终端: cd data/data/tmp (到存放gdbserver的目录)
[9].获得app进程号: ps com.fun.funm
[10].终端: ./gdbserver :1080[端口] —attach 6280[进程号]
[11].切换到proj.android终端
[12].终端: adb forward tcp:1080 tcp:1080
[13].启动: ndk/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-gdb
[14].终端: target remote: 1080
[15].打开 ./lib/armeabi/gdb.setup, 将里面的两个命令贴入终端执行
 
1.配置环境变量,.bash_profile文件
## andorid
export ANDROID_HOME=/Volumes/work/program
export ANDROID_SDK=${ANDROID_HOME}/adt-bundle-mac-x86_64-20140702/sdk
export ANDROID_NDK=${ANDROID_HOME}/android-ndk-r10
export NDK=${ANDROID_NDK}
export PATH=${PATH}:${ANDROID_SDK}/tools
export PATH=${PATH}:${ANDROID_SDK}/platform-tools
export PATH=${PATH}:${ANDROID_NDK}/platforms
export PATH=${PATH}:${ANDROID_NDK}/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/bin ## ant
export ANT_HOME=${ANDROID_HOME}/apache-ant-1.9.6
export PATH=${PATH}:${ANT_HOME}/bin ## python path
export PYTHONHOME=/usr/lib/python2.7
export PYTHONPATH=.:$PYTHONHOME:$PYTHONHOME/site-packages
export PATH=${PATH}:$PYTHONHOME:$PYTHONPATH ## custom path
export WORKSPACE=/Volumes/work/projecj
export FUNM_PROJ_ROOT=/Volumes/work/project/v3.1.0.1-20160222/funm/proj.android

2.android版本设置,local.properties, project.properties, ant.properties

设置完执行创建ant编译需要的文件build.xml:

android update project -t android-20 -p .

3.mk文件配置:

Application.mk文件
NDK_TOOLCHAIN_VERSION := 4.8
APP_ABI := armeabi
Android.mk文件
优选选项 -o0

4.native代码文件编译

## build debug
$NDK_ROOT/ndk-build NDK_DEBUG=1

5.ant 项目目录下打包apk:

ant debug;ant release;

6.adb 安装apk:

adb install Funm-debug.apk

7.启动apk,开启gdb调试

## gdb attach
$NDK_ROOT/ndk-gdb

然后就可以开始设置断点调试了

继续:c(continue)
设置断点:break test.cpp:100
查看断点:info breakpoints
删除断点:clear / clear test.cpp:100 / delete 1 2 3 
 
需要工具:
ndk编译及调试:android-ndk-r10
ant打包:apache-ant-1.9.6(适合有专门编译机时使用此方式打包)
eclipse打包:adt-bundle-mac-x86_64-20140702(集成版,本地调试用eclipse即可)
gdb调试不用每次重新打包,只要打包出apk,启动后设置断点即可。

Android gdb 调试的更多相关文章

  1. Eclipse+CDT+GDB调试android NDK程序(转)

    Eclipse+CDT+gdb调试android ndk程序 先介绍一下开发环境,在这个环境下,up主保证是没有问题的. ubuntu 11.10 eclipse 3.7(indego) for ja ...

  2. 使用GDB调试Android NDK native(C/C++)程序

    使用GDB调试Android NDK native(C/C++)程序 先说明下,这里所谓的ndk native程序跟Android上层java应用没有什么关系,也不需要涉及jni来封装native接口 ...

  3. 使用GDB调试Android NDK native(C/C++)程序-转

    最 近写了些需要跨平台兼容的C++库,Android是其中需要兼容的平台之一.区别于Windows,Mac中功能强大的IDE环境,官方并没有为 Android ndk提供太多的支持.因此,尝试了下通过 ...

  4. 使用GDB调试Android Native 层代码

    --------------步骤:0. adb root0. adb shell0. ps | grep browser1. gdbserver :5039 --attach pid2. adb fo ...

  5. 使用WIFI连接android进行调试和adb操作

    本人需要wifi连接android进行调试的原因主要是要经常用到IDA pro进行调试,但手头有的IDA Pro版本只是windows的,开发可能更多用Mac OS X了,来回拔插.调试很不方便,所以 ...

  6. GDB调试:Linux开发人员必备技能

    开篇词:Linux C/C++ 开发人员要熟练掌握 GDB 调试 大家好,我是范蠡,目前在某知名互联网旅游公司基础框架业务部技术专家组任开发经理一职. 本系列课程的主题是 Linux 后台开发的 C/ ...

  7. GDB调试命令小结

    1.启动调试 前置条件:编译生成执行码时带上 -g,如果使用Makefile,通过给CFLAGS指定-g选项,否则调试时没有符号信息.gdb program //最常用的用gdb启动程序,开始调试的方 ...

  8. GDB调试汇编堆栈过程分析

    GDB调试汇编堆栈过程分析 分析过程 这是我的C源文件:click here 使用gcc - g example.c -o example -m32指令在64位的机器上产生32位汇编,然后使用gdb ...

  9. gdb调试器的使用

    想要使用gdb调试程序的话,首先需要gcc -g main.c -o test 然后运行gdb test对程序进行调试 l (小写的l,是list的首字母),用以列出程序 回车    是运行上一个命令 ...

随机推荐

  1. 使用Apache的Base64类实现Base64加解密

    包名称:org.apache.commons.codec.binary 类名称:org.apache.commons.codec.binary.Base64 1.Base64加密 public sta ...

  2. sql server和mysql中分别实现分页功能

    MySQL 在MySQL中,可以用 Limit 来查询第 m 列到第 n 列的记录, 例如: select * from tablename limit m, n sql="select * ...

  3. Linux学习笔记15-YUM安装

    rpm软件包缺点:需要手工解决软件包的依赖关系.使用YUM可解决该问题. YUM(Yellodog Updater, Modified)是一个RPM前端程序,主要目的是设计用来自动解决RPM的依赖关系 ...

  4. java对cookie的操作

    java对cookie的操作比较简单,主要介绍下建立cookie和读取cookie,以及如何设定cookie的生命周期和cookie的路径问题. 建立一个无生命周期的cookie,即随着浏览器的关闭即 ...

  5. Adaptive Backgrounds – jQuery 自适应背景插件

    Adaptive Backgrounds 是一款很特别的 jQuery 插件,可以从图像中提取主导颜色并将它应用到它的父元素.这个插件利用 Canvas 元素和 ImageData 对象.需要注意的是 ...

  6. Spirit - 腾讯移动 Web 整体解决方案

    Spirit 并不是一个具体的框架或者工具,但是她是移动端一系列解决方案的整合与聚拢.她是腾讯 Alloyteam 开发团队在移动开发项目中通过大量实践.归纳.总结提炼而成,最终沉淀下来的一个体系,真 ...

  7. JavaScript 左右上下自动晃动,自动移动。

    最近做了一个项目,本来用css3动画做的,不兼容ie,用js做了个,分享给大家. 代码修改了下,上下左右四个模块,顺时针转动. <!DOCTYPE html> <html> & ...

  8. Refusing to install webpack as a dependency of itself

    用npm安装webpack的时候报了这个错: Refusing to install webpack as a dependency of itself 翻译过来大概是:'拒绝安装webpack其本身 ...

  9. HTML5拖拽实例

    最近应该会用到,借用一下......小妹儿,你又变懒了 拖拽相关属性 draggable属性是html5的全局属性,是html5支持拖放操作的方式之一,用来表示元素是否可以被拖放,draggable有 ...

  10. Ridge Regression(岭回归)

    Ridge Regression岭回归 数值计算方法的"稳定性"是指在计算过程中舍入误差是可以控制的. 对于有些矩阵,矩阵中某个元素的一个很小的变动,会引起最后计算结果误差很大,这 ...