java 安卓调试_【转】Android 调试技术

一、JAVA层单步调试

二、Native层单步调试

三、JAVA层堆栈打印

1. 在指定的函数内打印相关java调用 Log.d(TAG,Log.getStackTraceString(new Throwable()));

2. 普通JAVA进程堆栈 ActivityManagerService.dumpStackTraces

保存在系统设置dalvik.vm.stack-trace-file指定的文件data/anr/traces.txt中。可以包含多个进程堆栈信息。

3. 内核进程堆栈

dumpKernelStackTraces,该函数为私有函数,不可调用。

代码在frameworks/base/services/java/com/android/server/Watchdog.java

保存在系统设置dalvik.vm.stack-trace-file指定的文件data/anr/traces.txt中。

4. 出异常时打印当前堆栈

Exception::printStackTrace() try { ... } catch (RemoteException e) {   e.printStackTrace();   ... }

5. 输出指定进程的堆栈 Process.sendSignal(pid, Process.SIGNAL_QUIT)

保存在data/anr/traces.txt。

这个只对java进程有效,由dalvikvm的SignalCatcher.c处理。

四、Native层堆栈打印

1. CallStack

使用方式: #include ... CallStack stack; stack.update(); stack.dump("");  // the parameter is prefix of dump

在使用之前需要修改system/core/include/arch/linux-arm/AndroidConfig.h #define HAVE_DLADDR 1 #define HAVE_CXXABI 1

并在文件frameworks/base/libs/utils/Android.mk中大约105行(LOCAL_SHARED_LIBRARIES)后添加 ifeq ($(TARGET_OS),linux) LOCAL_SHARED_LIBRARIES += libdl endif

重新编译,push生成的libutils.so到/system/lib/目录下,重启设备。

五、JAVA异常分析

这个android会输出信息到logcat。容易分析。

六、Natvie异常分析

native进程异常会导致

debuggerd会输出信息到logcat并保存到/data/tombstones。

可以修改system/core/debuggerd/debuggerd.c中dump_stack_and_code的代码满足更深的调试信息需求。

七、日志Log系统

在java中使用 import android.util.Log; ... Log.d(TAG,"log info");

在Native代码中使用 #define LOG_TAG "YOUR_LOGTAG" ... #include #define LOG_NDEBUG 0 ... LOGD("log info");

或者 Log.d(LOG_TAG,“log info”);

使用adb logcat时可以只显示特定类别的LOG,还可以通过参数 -v threadtime 显示线程号及时间信息。

普通标准输出转为Logcat #system/bin/logwrapper 进程名

八、其他调试手段(命令行)

1. 打印指定JAVA进程的堆栈到文件中 #kill -3 pid

这里的3就是3.5节的Process.SIGNAL_QUIT。

输出在data/anr/traces.txt文件中。

这个只对java进程有效,由dalvikvm处理。

2. 打印指定进程的堆栈到Logcat #kill -11 pid 或者 #kill -7 pid

这个有时有效。其原理是利用了(六)节的机制。

可以用adb logcat看堆栈调用输出。

3. 打印指定进程的系统调用 #strace -f -p pid -o output

主要输出文件、SOCKET、锁等系统操作的信息。

-f表示跟踪所有子进程.

-o输出log到指定文件,可不用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506888.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java spring4 jar包_spring jar包官方下载|

spring-web jar包是用来SSH配置的jar包 配置了监听器,还出现严重: Error configuring application listener of class org.springframework.web.context.ContextLoader就需要它,欢迎有需要的用户前来it猫扑下载!spring-web.jar作用spring-web…

java 找不到符号 con_我的java程序运行时,提示找不到符号,求解!

我的java程序运行时,提示找不到符号,求解!关注:163 答案:4 mip版解决时间 2021-02-07 23:57提问者人潮拥挤你不在2021-02-06 23:57import java.awt.*;import java.awt.event.*;import java.applet.Applet;import java.applet.AudioClip;public class M…

java字符串为空抛出异常_Java 判断字符串是否为空的四种方法,及效率比较。

以下是Java 判断字符串是否为空的四种方法:方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低:if(s null ||"".equals(s));方法二: 比较字符串长度, 效率高, 是我知道的最好一个方法:if(s null || s.length() < 0);方法三: Java SE 6.0 才开始提供的方法, …

java抽组件_Java实现的基于模板的网页结构化信息精准抽取组件:HtmlExtractor

HtmlExtractor由2个子项目构成&#xff0c;html-extractor和html-extractor-web。html-extractor实现了数据抽取逻辑&#xff0c;是从节点&#xff0c;html-extractor-web提供web界面来维护抽取规则&#xff0c;是主节点。html-extractor是一个jar包&#xff0c;可通过maven引用…

mysql索引过多为什么会慢_mysql – 为什么索引使这个查询更慢?

摘要问题是由于b-trees的性质,字段不适合索引.说明假设你有一张表有500,000个掷硬币的结果,其中抛掷是1(头)或0(尾)&#xff1a;CREATE TABLE toss (id int NOT NULL AUTO_INCREMENT,result int NOT NULL DEFAULT 0,PRIMARY KEY ( id ))select result, count(*) from toss grou…

pythonweb管理电脑_Python远程控制局域网计算机网络远程控制软件Python的开发,python,电脑,web...

[Python] 纯文本查看 复制代码import web import osimport timefrom PIL import ImageGrabimport numpy as npimport cv2urls (/reboot_html/(.*), reboot_html,/jp_html/(.*), jp_html,/shutdown_html/(.*), shutdown_html,/(js|css|images)/(.*), static)app web.applicati…

ctf的php,CTF中常见的PHP漏洞

1.MD5()漏洞php在处理字符串时会利用&#xff01;&#xff0c;||&#xff0c;进行hash值的比较 他把每一个“0E’开头的哈希值都解释为0&#xff0c;因此如果两个不同的密码经过hash处理之后都是以‘0e’开头&#xff0c;那么PHP会认为两者是相同的&#xff0c;南京邮电大学一次…

php ob 缓存,php中ob函数缓冲机制深入理解

下面就php中ob函数缓冲机制通过文字说明加代码分析的形式给大家展示如下&#xff1a;对于一个刚刚入门的php程序员来说&#xff0c;php缓冲区是几乎透明的。在他们心目中&#xff0c;一个echo print_r 函数&#xff0c;数据便会‘嗖的一声飞到浏览器上&#xff0c;显示出来。我…

php极光推送教程,laravel框架使用极光推送消息操作示例

本文实例讲述了laravel框架使用极光推送消息。分享给大家供大家参考&#xff0c;具体如下&#xff1a;最近需要使用极光推送往客户端推消息&#xff0c;所以这里记录下使用过程。极光推送的服务端文档&#xff1a;https://docs.jiguang.cn/jpush/server/push/server_overview/极…

php 强制刷新,web端实现后退强制刷新功能代码

本文主要和大家介绍了微信web端后退强制刷新功能的实现代码,需要的朋友可以参考下&#xff0c;希望能帮助到大家。具体代码如下所示&#xff1a;//生成uuidvar uuidChars "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split("");fu…

php强制cookies,php Cookies操作类(附源码)

本cookies操作类的功能&#xff0c;包括&#xff1a;1&#xff0c;保存&#xff0c;读取&#xff0c;更新&#xff0c;清除cookies数据。2&#xff0c;可设置前缀。3&#xff0c;强制超时控制。4&#xff0c;cookies数据可以是字符串&#xff0c;数组&#xff0c;对象等。1&…

php 缩略图 失真,WORDPRESS缩略图失真变形模糊的解决方法

众所周知&#xff0c;网站最怕改版&#xff0c;其中一个主要的原因就是缩略图的问题&#xff0c;旧模板的缩略图尺寸不一定适合新版的模板缩略图尺寸要求&#xff0c;尽管后台的设置-多媒体-缩略图尺寸修改了&#xff0c;可这是新上传的图片才会生成新的尺寸的缩略图&#xff0…

php表单 提交数据,PHP表单提交数据

1.PHP表单处理PHP 超全局变量 $_GET 和 $_POST 用于收集表单数据GET 和 POST 都创建数组(例如&#xff0c;array( key > value, key2 > value2, key3 > value3, ...))。此数组包含键/值对&#xff0c;其中的键是表单控件的名称&#xff0c;而值是来自用户的输入数据。…

binarysearch java,java数据结构之二分查找法 binarySearch的实例

java数据结构之二分查找法 binarySearch的实例折半查找法&#xff0c;前提是已经排好序的数组才可查找实例代码&#xff1a;public class BinarySearch {int[] bArr;public void setArr(int[] bArr){this.bArrbArr;}public static void main(String[] args) {int arrLength16;i…

matlab dotline,基于模糊控制的路径规划算法的仿真实现---Matlab程序.rar

【实例简介】与 本人博客中的课程论文《基于模糊控制的路径规划算法的仿真实现》相配套&#xff0c;可以相互参阅【实例截图】【核心代码】基于模糊控制的路径规划算法的仿真实现---Matlab程序├── fuzzy4│ ├── CheckIsBlocked.asv│ ├── CheckIsBlocked.m│ ├…

php重定义地址栏url,thinkphp框架实现路由重定义简化url访问地址的方法分析

本文实例讲述了thinkphp框架实现路由重定义简化url访问地址的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;如果按照正常访问的话&#xff0c;则需要输入一长串的url地址&#xff0c;这样会显得十分冗长&#xff0c;我可以可以通过对路由规则的重新定义简化url访…

php 数组 json字段去不全,json_encode – PHP给出了不完整的json字符串

首先我的环境&#xff1a;PHP 5.3.2 – 使用Suoshin和xCache的lighttpd / 1.4.26我的代码太多了,不能在这里发布.我会说出来的.文件x.php正在加载一些PHP – Classe,初始化它们,执行一些函数 – >获取Result数组.如果我print_r这个数组我得到一个完整的结果.但是我使用json_…

java 判断季节,Java-用switch判断季节

import java.util.*;class Demo3{public static void main(String[] args){//需求 &#xff1a;输入一个月份 &#xff0c;判断月份属于哪一个季节 &#xff1a;春天:3,4,5//夏天 &#xff1a;6&#xff0c;7&#xff0c;8 &#xff0c;秋天:9,10,11 冬天&#xff1a;12&#x…

matlab jp2格式,JP2文件扩展名_JP2是什么格式_JP2文件怎么打开-文件百科

JPEG 2000标准是由联合图像专家组(JPEG)委员会在1990年代后期开发的&#xff0c;以代替1992年发布的JPEG标准。它对JPEG格式进行了一些改进&#xff0c;采用小波压缩算法&#xff0c;不会产生原先的基于离散余弦变换的JPEG标准产生的块状模糊瑕疵。JPEG 2000使用小波变换、画布…

PPT下载下来是php,用php下载jpg,doc,ppt文件已损坏

我试图用php下载一些文件来隐藏文件路径&#xff0c;但是一些文件类型总是被破坏。像PDF和MP3文件类型很好。像doc&#xff0c;PPT&#xff0c;JPG等文件类型总是下载破碎。我使用这些mimetypesif (file_exists($file_real)){$extension strtolower(substr(strrchr($file, &qu…