文档章节

ndk-gdb调试Native可执行程序

stormm
 stormm
发布于 2016/08/30 15:02
字数 275
阅读 332
收藏 2

前言:

使用NDK编译的可执行程序的调试步骤整理

1、编译调试版本

1.1、Application.mk中增加
APP_OPTIM := debug

1.2、编译增加DEBUG选项
$ndk-build NDK_DEBUG=1
$ndk-build NDK_PROJECT_PATH=.  NDK_APPLICATION_MK=./Application.mk APP_BUILD_SCRIPT=./Android.mk

2、将生成目录下的gdbserver拷贝到手机上

#拷贝gdbserver
$adb push libs/armeabi-v7a/gdbserver /data/local/tmp

#给权限
$adb shell "chmod 777 /data/local/tmp/gdbserver"

#拷贝可执行程序
$adb push libs/armeabi-v7a/expolit /data/local/tmp

#分配权限
$adb shell "chmod 777 /data/local/tmp/expolit"

3、手机终端启动gdbserver

3.1、
$adb shell
$cd /data/local/tmp
#启动gdbserver,端口号1234,expolit为要启动的可执行文件
$./gdbserver :1234 expolit

3.2、转发端口
$adb forward tcp:1234 tcp:1234


4、主机端连接调试

#切换到jni的上层目录
$cd {jni-dir}

#连接gdb
$D:\android-ndk-r10e\android-ndk-r10e\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin\arm-linux-androideabi-gdb.exe

#设置符号路径
(gdb)set solib-search-path obj/local/armeabi-v7a
#强制加载带符号的可执行文件 
(gdb)file obj/local/armeabi-v7a/expolit
#连接远程gdb服务
(gdb)target remote :1234
(gdb) bt
#0  init_payloads () at jni/exploit.c:95
#1  0xb6fe557c in main (argc=1, argv=0xbeac5aa4, env=0xbeac5aac) at jni/exploit.c:294

最后enjoy debuging....

© 著作权归作者所有

上一篇: android 拾遗
stormm
粉丝 32
博文 22
码字总数 14557
作品 0
昌平
运维
私信 提问
GDB远程调试Android上的可执行ELF文件

GDB远程调试Android上的可执行ELF文件 @(Android研究)[android gdb] [TOC] 文章背景 现在需要将Linux上的工具移植到Android上,通常Linux上代码是通过Makefile管理编译选项,为了直接使用Mak...

i不歪
2016/04/06
462
0
从零开始手敲次世代游戏引擎(Android特别篇)-3

在文章从零开始手敲次世代游戏引擎(Android特别篇)-2当中我们完成了执行环境的部署,并打通了开发环境和执行环境。但是到目前为止我们只是完成了C/C++部分的交叉编译,并没有实现Android应...

陈文礼
2018/01/08
0
1
Android native debug: 手动使用gdbserver远程调试C代码

一般用java做一个Android app,里面夹杂着jni/*.c 所编译出来的lib,是可以通过gdb来调试的,也许大多数人都在按照网上各种帮助在使用,原理是比较古怪的:app里被塞进去一个gdbserver程序!...

Q_J
2015/06/19
221
0
[Android]关于Native函数的debug

先占坑,有空发。 环境:WIN7 + eclipse + android sdk4.3 + ndk r9b 需求:安卓程序通过jni调用C代码,并对C代码进行debug。 纠结:1、使用真机,直接无法启动 2、使用模拟器,能够启动,但...

ouczxl
2014/04/24
1K
0
gdb调试总结

一、安卓机器中本地使用gdb调试 二、双机(安卓上安装gdbserver,PC端运行gdbclient) 1、编译native代码时使用NDK_DEBUG参数,编译完成后会在libs/armeabi-v7/下多生成两个文件gdb.setup和g...

fallrain
2016/03/09
302
0

没有更多内容

加载失败,请刷新页面

加载更多

学习记录(day05-标签操作、属性绑定、语句控制、数据绑定、事件绑定、案例用户登录)

[TOC] 1.1.1标签操作v-text&v-html v-text:会把data中绑定的数据值原样输出。 v-html:会把data中值输出,且会自动解析html代码 <!--可以将指定的内容显示到标签体中--><标签 v-text=""></......

庭前云落
43分钟前
5
0
VMware vSphere的两种RDM磁盘

在VMware vSphere vCenter中创建虚拟机时,可以添加一种叫RDM的磁盘。 RDM - Raw Device Mapping,原始设备映射,那么,RDM磁盘是不是就可以称作为“原始设备映射磁盘”呢?这也是一种可以热...

大别阿郎
今天
9
0
【AngularJS学习笔记】02 小杂烩及学习总结

本文转载于:专业的前端网站☞【AngularJS学习笔记】02 小杂烩及学习总结 表格示例 <div ng-app="myApp" ng-controller="customersCtrl"> <table> <tr ng-repeat="x in names | orderBy ......

前端老手
昨天
13
0
Linux 内核的五大创新

在科技行业,创新这个词几乎和革命一样到处泛滥,所以很难将那些夸张的东西与真正令人振奋的东西区分开来。Linux内核被称为创新,但它又被称为现代计算中最大的奇迹,一个微观世界中的庞然大...

阮鹏
昨天
16
0
【Medium 万赞好文】ViewModel 和 LIveData:模式 + 反模式

原文作者: Jose Alcérreca 原文地址: ViewModels and LiveData: Patterns + AntiPatterns 译者:秉心说 View 和 ViewModel 分配责任 理想情况下,ViewModel 应该对 Android 世界一无所知。...

秉心说
昨天
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部