Android NDK调试C++源码(转)
【原创文章,转载请保留或注明出处,http://download.csdn.net/download/bigmaxim/5474055】
1. 相关软件
adt-bundle-windows-x86.zip --- Eclipse集成ADT插件,需要联网安装相应的Android SDK。
jdk-6u43-windows-i586.exe --- JDK6 Eclipse运行需要JAVA环境,编译ANDROID应用也需要JAVA编译器。
android-ndk-r8e-windows-x86.zip --- NDK r8e,支持在ANDROID应用中用C语言进行开发。说明:ndk-build可以不需要cygwin环境。
Cygwin --- 使用ndk-gdb调试C源码,需要Cygwin环境的支持。
2. WinXP系统环境变量配置
ADB_PATH=D:\GreenProgram\adt-bundle-windows-x86\sdk\platform-tools
classpath=.;%JAVA_HOME%\lib;%JAVA_HOME\lib\tools.jar
CYGWIN_BIN=C:\cygwin\bin
ECLIPSE_PATH=D:\GreenProgram\adt-bundle-windows-x86\eclipse
JAVA_HOME=C:\Program Files\Java\jdk1.6.0_43
NDK_ROOT=D:\GreenProgram\adt-bundle-windows-x86\android-ndk-r8e
Path=%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;%NDK_ROOT%;%ADB_PATH%;%CYGWIN_BIN%;%ECLIPSE_PATH%
3. Cygwin配置
在当前用户的home目录下文件.bash_profile末尾添加以下2行
NDK_ROOT=/cygdrive/d/GreenProgram/adt-bundle-windows-x86/android-ndk-r8e
export NDK_ROOT
为方便调试程序,可添加以下一行。当启动cygwin时,直接进入项目目录。
cd /cygdrive/f/EclipseWorkspace/01_Capella/05_Test/01_L1Test/EMVTest
4. 应用工程配置
在“window –> preferences ->Android -> NDK”中添加NDK的路径。
AndroidManifest.xml文件中Debuggable设为true。
NDK编译设置:ndk-build NDK_DEBUG=1 V=1。
在android工程中的项目上点击右键,选择android tools中的add natie support,这样会增加c/c++等的编译链接选项。
5. Native方法中C源码级调试
5.1. 编译完应用,生成文件。
5.2. 右键点击工程 ->Run As->Android Application。
下载安装应用程序到开发板(或模拟器)中,并启动应用程序。
注意:这里只是要将生成的应用程序安装到开发板(或模拟器)
5.3. 启动Cygwin进入当前工程目录。
执行命令 ndk-gdb --force --verbose –start
在提示符<gdb>下输入quit退出。
在目录obj\local\ armeabi下增加了4个文件。
5.4. 右键点击工程 ->Debug As->Android Native Application。
在需要调试的位置设好断点,开始C源码级调试。
6.参考资料
http://download.csdn.net/download/bigmaxim/5474055
http://xzhoumin.blog.163.com/blog/static/408811362013230517254/
Android NDK调试C++源码(转)的更多相关文章
- Android动态方式破解apk进阶篇(IDA调试so源码)
一.前言 今天我们继续来看破解apk的相关知识,在前一篇:Eclipse动态调试smali源码破解apk 我们今天主要来看如何使用IDA来调试Android中的native源码,因为现在一些app,为 ...
- Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码)
Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码) 来源 https://blog.csdn.net/jiangwei0910410003/article/details/51 ...
- Android动态方式破解apk前奏篇(Eclipse动态调试smail源码)
一.前言 今天我们开始apk破解的另外一种方式:动态代码调试破解,之前其实已经在一篇文章中说到如何破解apk了: Android中使用静态方式破解Apk 主要采用的是静态方式,步骤也很简单,首先使用 ...
- Android 自定义View及其在布局文件中的使用示例(三):结合Android 4.4.2_r1源码分析onMeasure过程
转载请注明出处 http://www.cnblogs.com/crashmaker/p/3549365.html From crash_coder linguowu linguowu0622@gami ...
- 【转】Ubuntu 14.04.3上配置并成功编译Android 6.0 r1源码
http://www.linuxidc.com/Linux/2016-01/127292.htm 终于成功把Android 6.0 r1源码的源码编译.先上图,这是在Ubuntu中运行的Android ...
- 动态方式破解apk进阶篇(IDA调试so源码)
动态方式破解apk进阶篇(IDA调试so源码) 来源 https://blog.csdn.net/qq_21051503/article/details/74907449 下面就说关于在IDA中And ...
- 使用“Cocos引擎”创建的cpp工程如何在VS中调试Cocos2d-x源码
前段时间Cocos2d-x更新了一个Cocos引擎,这是一个集合源码,IDE,Studio这一家老小的整合包,我们可以使用这个Cocos引擎来创建我们的项目. 在Cocos2d-x被整合到Cocos引 ...
- 使用VS2012调试ReactOS源码
目录 一 下载并安装VS2012 二 下载并安装WDK80 三 下载ReactOS0315源码 四 下载并安装RosBE211 五 用RosBE命令行编译ReactOS源码 六 用VS2012编译nt ...
- Android音乐播放器源码(歌词.均衡器.收藏.qq5.0菜单.通知)
一款Android音乐播放器源码,基本功能都实现了 qq5.0菜单(歌词.均衡器.收藏.qq5.0菜单.通知) 只有向右滑动出现,菜单键和指定按钮都还没有添加. 源码下载:http://code.66 ...
随机推荐
- 基于Linux的oracle数据库管理 part3( 存储 网络 常用命令 )
主要内容 1. 常用存储模式 2. 配置网络 3. 维护指令 常用存储模式 - 文件系统 优点:管理方便, 缺点:读写慢 - 裸设备 只没有被格式化和挂载的磁盘, 只能有程序直接访问, 不能被操作系统 ...
- HeadFirst Jsp 14 (Structs)
大的web程序可能很复杂, 分很多”层” 有关 RMI 的部分, 可以参考 headfirst java 中的 RMI 的部分. struts 是一个框架, 框架是一些接口和类的集合, 这些接口和类设 ...
- jQuery mouseover与mouseenter的区别
在我们的页面中经常会用到mouseover与mouseout事件来给页面添加更好的渲染效果,但如果触发mouseover事件的元素有子元素的话,会造成闪烁的效果,看着很不舒服,这是因为mouseove ...
- poj 3744 Scout YYF I (矩阵快速幂 优化 概率dp)
题目链接 分析&&题意来自 : http://www.cnblogs.com/kuangbin/archive/2012/10/02/2710586.html 题意: 在一条不满地雷的 ...
- HDU 1506 Largest Rectangle in a Histogram
这个问题姑且也叫做最大子矩阵吧 给一个树状图,求一个最大面积的子矩阵 思路是这样的,对于每个单位矩阵,求出左边连续不比它低的矩阵的下标,放在l数组里 同样,再求出右边连续的不比它低的矩阵的下标 这样, ...
- smarty 初始配置文件
<?php define("ROOT",str_replace("\\","/",dirname(__FILE__)).'/'); r ...
- HDU 4627 The Unsolvable Problem 2013 Multi-University Training Contest 3
给你一个数 n ( 2 <= n <= 109 ),现在需要你找到一对数a, b (a + b = n),并且使得LCM(a, b)尽可能的大,然后输出最大的 LCM(a, b). (为什 ...
- JVM——类的加载过程
附一张图方便理解,一个类的执行过程 类的加载过程,简明的来说 类装饰器就是寻找类的字节码文件并构造出类在JVM内部表示的对象组件.在Java中,类装载器把一个类装入JVM中,要经过以下步骤: 装载:查 ...
- Apache PHP 安装问题 (SUSE Linux)
1. SUSE Linux配置命令如下: './configure' '--with-apxs2=/usr/local/apache2/bin/apxs' '--with-mysql' 2. 接下来 ...
- Undefined symbols for architecture armv7
xcode编译过程中出现如下问题Undefined symbols for architecture armv7:... ld: symbol(s) not found for architectur ...