android dump堆栈分析

定位androidnavicrashandroid框架分为java和native两层 。native运行在C的运行时上 , 效率高,AndroidNativeCrash的log 分析和位置大概有几种情况,android中的nativecrash是什么意思 。

1、为什么要初始化 堆栈?之前看了很多关于uboot 分析的资料,其中有一篇说准备C语言的操作堆栈 。\x0d\x0a , 在Uboot的开始 。s汇编代码,我还看到有一个堆栈指针来初始化系统 。但是我没见过有人说堆栈应该在系统初始化的时候初始化,也就是正确的给堆栈指针sp赋值,但是我也没见过有人解释堆栈为什么要初始化 。所以下面的内容就是试图解释为什么堆栈要初始化 , 也就是说,\x0d\x0a,为什么C语言的函数调用中使用了堆栈

\x0d\x0a , 如果要详细解释堆栈的作用,时间会比较长,这里只是简单介绍一下 。\x0d\x0a一般来说堆栈的作用是保存场景/上下文,传递参数 。\x0d\x0a\x0d\x0a1 。保存场景/上下文\x0d\x0a\x0d\x0a场景,表示相当于犯罪现场 。总有一些现场情况,要记录下来,不然被别人破坏后就无法还原现场了 。

2、eclipse如何根据 dump的内存数据,生成对应的函数调用栈?在Eclipse中,可以使用MemoryAnalyzer(MAT)将分析文件转储到内存中 。MAT可以帮助您诊断内存泄漏和内存消耗 。在Eclipse中,可以使用MemoryAnalyzerTool(MAT)根据dump的内存数据生成相应的函数调用栈 。下面是一些通用步骤:在Eclipse中打开MAT插件(如果没有安装 , 可以在EclipseMarketplace中搜索安装) 。

分析完成后,选择支配树或直方图检查内存使用情况 。选择对象或类到分析,然后右键单击MergeShortestPathstoGCRoots,这将生成一个以所选对象为根节点的引用图 。在引用图中选择对象或类到分析,然后右键选择ShowNearestGCRoot , 将显示所选对象或类的直接引用者(即堆栈帧) 。

3、如何利用ndk-stack工具查看so库的调用 堆栈【android dump堆栈分析】1 。要保存日志,首先选中eclipse的LogCat的所有行,点击保存,假设保存到/user/MAC/desktop/log.txt2,找到你的so(确保你的so是带调试信息的调试版本)所在的目录,应该是你的android project/obj/local 。假设我的在/user/MAC/desktop/myproj/proj 。android/obj/local/armbi2,打开控制台光盘到ndk的安装目录3,键入命令 。/ndkstacksym/user/MAC/desktop/myproj/proj 。.将显示obj/local/armbidumpuser/MAC/desktop/log . txt crash堆栈