ndk-stack 使用(分析native代码stack)
简介:
ndk r6 版本之后开始提供该功能。
作用:
ndk-stack可以把不认识的内存地址信息转换成可读的信息。
比如,把下列内容
I/DEBUG ( ): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG ( ): Build fingerprint: 'generic/google_sdk/generic/:2.2/FRF91/43546:eng/test-keys'
I/DEBUG ( ): pid: , tid: %gt;%gt;%gt; /data/local/ndk-tests/crasher <<<
I/DEBUG ( ): signal (SIGSEGV), fault addr 0d9f00d8
I/DEBUG ( ): r0 0000af88 r1 0000a008 r2 baadf00d r3 0d9f00d8
I/DEBUG ( ): r4 r5 0000a008 r6 0000af88 r7 00013c44
I/DEBUG ( ): r8 r9 fp
I/DEBUG ( ): ip 0000959c sp be956cc8 lr pc 0000841e cpsr
I/DEBUG ( ): # pc 0000841e /data/local/ndk-tests/crasher
I/DEBUG ( ): # pc 000083fe /data/local/ndk-tests/crasher
I/DEBUG ( ): # pc 000083f6 /data/local/ndk-tests/crasher
I/DEBUG ( ): # pc 000191ac /system/lib/libc.so
I/DEBUG ( ): # pc 000083ea /data/local/ndk-tests/crasher
I/DEBUG ( ): # pc /data/local/ndk-tests/crasher
I/DEBUG ( ): # pc 0000d362 /system/lib/libc.so
I/DEBUG ( ):
转换成可读信息后:
********** Crash dump: **********
Build fingerprint: 'generic/google_sdk/generic/:2.2/FRF91/43546:eng/test-keys'
pid: , tid: >>> /data/local/ndk-tests/crasher <<<
signal (SIGSEGV), fault addr 0d9f00d8
Stack frame # pc 0000841e /data/local/ndk-tests/crasher : Routine zoo in /tmp/foo/crasher/jni/zoo.c:
Stack frame # pc 000083fe /data/local/ndk-tests/crasher : Routine bar in /tmp/foo/crasher/jni/bar.c:
Stack frame # pc 000083f6 /data/local/ndk-tests/crasher : Routine my_comparison in /tmp/foo/crasher/jni/foo.c:
Stack frame # pc 000191ac /system/lib/libc.so
Stack frame # pc 000083ea /data/local/ndk-tests/crasher : Routine foo in /tmp/foo/crasher/jni/foo.c:
Stack frame # pc /data/local/ndk-tests/crasher : Routine main in /tmp/foo/crasher/jni/main.c:
Stack frame # pc 0000d362 /system/lib/libc.so
使用方法:
前提: 你的代码必须是使用ndk build打包出来的。这样地址信息就会是
$PROJECT_PATH/obj/local/<abi>
其中 <abi> 是根据你的手机的ABI来的。(比如:’armeabi‘就是默认值)
打开你的控制台,输入($NDK是你的环境变量,指向NDK目录):
adb logcat | $NDK/ndk-stack -sym $PROJECT_PATH/obj/local/armeabi
大工完成。
ndk-stack 使用(分析native代码stack)的更多相关文章
- 解密native代码的内存使用
前言 无论是从资源使用的角度,还是从发现内存泄漏问题的角度来看,在性能测试或者系统的稳定性测试中,内存的使用情况是一个很重要的监控点.为保证项目的质量前移,输入法内核测试小组的同学分配到了一个新的任务 ...
- 013 - 关于GC root: Native Stack | MAT分析
Question: I have some third library code that I run and after some time I run into OutOfMemoryEr ...
- Android Native 代码NDK开发学习笔记
引用:http://www.kunli.info/2011/08/21/android-native-code-study-note/ JNI,全称Java Native Interface,是用于让 ...
- Ngen生成Native代码实战及优缺点分析
先科普一下,.Net是一个用于Windows的托管代码模型,用于高效构建具有视觉上引人注目的用户体验的应用程序.但这个模型生成的代码并非可执行代码,而是由.Net公共语言运行库环境执行的IL代码.所以 ...
- 集中式日志分析平台 - ELK Stack - 安全解决方案 X-Pack
大数据之心 关注 0.6 2017.02.22 15:36* 字数 2158 阅读 16457评论 7喜欢 9 简介 X-Pack 已经作为 Elastic 公司单独的产品线,前身是 Shield, ...
- Android 平台 Native 代码的崩溃捕获机制及实现
本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/g-WzYF3wWAljok1XjPoo7w 一.背景 ...
- 洛谷 P2194 HXY烧情侣【Tarjan缩点】 分析+题解代码
洛谷 P2194 HXY烧情侣[Tarjan缩点] 分析+题解代码 题目描述: 众所周知,HXY已经加入了FFF团.现在她要开始喜(sang)闻(xin)乐(bing)见(kuang)地烧情侣了.这里 ...
- 洛谷P1345 [USACO5.4]奶牛的电信Telecowmunication【最小割】分析+题解代码
洛谷P1345 [USACO5.4]奶牛的电信Telecowmunication[最小割]分析+题解代码 题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流. ...
- 洛谷P2832 行路难 分析+题解代码【玄学最短路】
洛谷P2832 行路难 分析+题解代码[玄学最短路] 题目背景: 小X来到了山区,领略山林之乐.在他乐以忘忧之时,他突然发现,开学迫在眉睫 题目描述: 山区有n座山.山之间有m条羊肠小道,每条连接两座 ...
随机推荐
- linux别名和快捷键
别名永久生效和删除别名 永久生效: vi ~./bashrc 写入环境变量配置文件 删除别名: unalias 别名 source命令可以让本身需要重新登录的命令不重新登录也生效 命令生效顺序: 1. ...
- Linux中的入口函数main
main()函数,想必大家都不陌生了,从刚开始写程序的时候,大家便开始写main(),我们都知道main是程序的入口.那main作为一个函数,又是谁调用的它,它是怎么被调用的,返回给谁,返回的又是什么 ...
- [Beta] postmortem
设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 解决网站前端的数据处理以及获取问题,定义的很清楚,对于典型用户也比较清晰,因为主要只有一个用户,所以对于 ...
- CentOS6.5恢复误删除的文件
系统环境:CentOS release 6.5 (Final) 内核版本:2.6.32-431.el6.x86_64 需要的源码包:extundelete-0.2.4.tar.bz2 解压bz2包: ...
- job history 的查看
linux shell 可以启动 mapred historyserver 然后根据显示的端口hostname+port进行访问(一般默认端口是19888)
- hiho一下18周 RMQ问题再临
RMQ问题再临 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 终于,小Hi和小Ho踏上了回国的旅程.在飞机上,望着采购来的特产--小Hi陷入了沉思:还记得在上上周他们去 ...
- DELPHI类声明方式简介
TMyDemo = class(TObject) FName: string; {数据成员(Field)} FAge: Integer; private {私有的} {最为隐秘的访问程度} proce ...
- ALV 顶栏的按钮设定
*&---------------------------------------------------------------------* *& Report ZHJ_TEST0 ...
- SQL Server 连接字符串备忘
今天把服务器上的远程访问关了,把连接字符串中的IP地址改成了.,然后就一直连不上.弄了半天,原来是本地连接时非默认实例,不能带端口号. 1.原来的连接服务器地址是:192.168.0.1SQL2005 ...
- JMeter基础之一 一个简单的性能测试
JMeter基础之一 一个简单的性能测试 上一节中,我们了解了jmeter的一此主要元件,那么这些元件如何使用到性能测试中呢.这一节创建一个简单的测试计划来使用这些元件.该计划对应的测试需求. 1)测 ...