[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. sql with 递归 查询特定区间日期

    declare @startDay smalldatetime ='2013-01-01'  ;with cte as(     select @startDay as d    union all  ...

  2. java内存模型-总结

    处理器内存模型 顺序一致性内存模型是一个理论参考模型,JMM 和处理器内存模型在设计时通常会把顺序一致性内存模型作为参照.JMM 和处理器内存模型在设计时会对顺序一致性模型做一些放松,因为如果完全按照 ...

  3. Use a cache

    To create high-performance systems, sometimes you need to cache data. Play has a cache library and w ...

  4. Rainyday.js – 使用 JavaScript 实现雨滴效果

    Rainyday.js 背后的想法是创建一个 JavaScript 库,利用 HTML5 Canvas 渲染一个雨滴落在玻璃表面的动画.Rainyday.js 有功能可扩展的 API,例如碰撞检测和易 ...

  5. JavaScript学习笔记-JSON对象

    JSON 是一种用来序列化对象.数组.数值.字符串.布尔值和 null 的语法.它基于 JavaScript 语法,但是又有区别:一些 JavaScript 值不是 JSON,而某些 JSON 不是 ...

  6. oracle表的管理

    表名和列的命名规则 必须以字母开头: 长度不能超过30字符: 不能使用oracle的保留字: 只能使用如下字符:A-Z,a-z,0-9,$,#等:   数据类型: 字符型: char       定长 ...

  7. arcgis破解的时候,不能启动license manager的问题

    1.防火墙没关:(非常重要) 2.win+R,调出控制台,输入services.msc.然后手动开启ArcGIS license manager服务,关闭其余类似erdas,matlab影响该服务的开 ...

  8. NMAP实用手册

    nmap在网络和渗透中使用相当频繁,相关教程也层出不穷.在此,我只整理出最实用的,言简意赅,方便自己,方便他人. 一.nmap介绍 NMAP,也就是Network Mapper,最早是Linux下的网 ...

  9. HttpClient示例

    <%@page import="com.sun.xml.ws.client.BindingProviderProperties"%> <%@page conten ...

  10. WCF分分钟入门

    近来学习wcf,总结了一下入门的经验,小白的入门篇,也方便以后复习,省的去查质料. 第一步:创建wcf程序,程序初始化有一个接口和一个实现类写个简单的返回方法就可以了: 第二步:创建一个宿主,也就是服 ...