c/c++
文章平均质量分 80
aa787282301
这个作者很懒,什么都没留下…
展开
-
linux错误代码定义
#define EPERM 1 /* Operation not permitted */#define ENOENT 2 /* No such file or directory */#define ESRCH 3 /* No such process */#define EINTR 4 /* Interrupted system call */#define EIO 5 /* I/O error */#define .原创 2021-08-19 16:27:31 · 754 阅读 · 0 评论 -
android存储读写测试工具-fio
一.工具下载并编译1.wget http://brick.kernel.dk/snaps/fio-2.2.5.tar.gz2.tar -zxvf fio-2.2.5.tar.gz3.cd fio-2.2.54.因为我们要在android中运行,所以我们需要安装交叉编译工具sudo apt-get install gcc-arm-linux-gnueabihf5.编译代码,指定arm运行平台,编译工具为arm-linux-gnueabihf-gcc,并且需要静态编译/configu原创 2020-10-22 20:44:39 · 3769 阅读 · 2 评论 -
native内存泄漏分析
一.摘要 我们在分析内存泄漏时java内存泄漏我们可以集成LeakCanary来进行监控,出现问题时会打印出泄漏时的引用关系,那么我们native内存泄漏时如何分析呢?native内存泄漏我们可以通过malloc_debug工具来进行监控,详细的介绍请参考:https://android.googlesource.com/platform/bionic/+/master/libc/malloc_debug/README.md二.如何使用 默认情况下高通的手机已经包含了mal...原创 2020-06-08 22:06:02 · 4486 阅读 · 0 评论 -
fd泄漏检测
一.摘要我们在分析fd泄漏问题的时候一般的通用方法是在/proc/pid/fd下不断的ls -al | wc -l统计fd数量,并且查看哪个fd不断的增多,然后再去代码中排查对应的代码,有时候光看fd并不容易找到泄漏的地方。本文章将介绍高通的leakdetect方法。二.leakdetect使用介绍默认情况下手机已经包含了fd泄漏的检测代码,具体路径在:bionic/libc/malloc_debug/,它可以监控:file(1),socket(2),mmap(3)具体原理就不多说了,.原创 2020-06-02 18:05:28 · 2755 阅读 · 0 评论 -
native 解析死锁方法
一. 概述 我们平时在分析system_server watchdog问题时有时候会遇到一些native层的死锁问题,正常情况下我们是把所有可疑的线程调用栈全部通过symbols找到可以的死锁线程,这个方法比较耗费体力和脑力。这篇文章将会教会你一个更为简便的方法我们通过gdb调试直接打印出对应吃锁的线程。二.通过GDB查看线程锁 我们通过aosp代码找到锁的定义:h...原创 2020-03-06 12:37:00 · 5711 阅读 · 0 评论 -
Sensor记录日志导致的亮屏慢问题分析
一. 问题描述1.1 现象 手机解锁卡顿1.2 结论 diag记录数据慢导致系统卡顿二. 问题分析2.1日志分析 在大量的日志中发现Slow Looper的日志,都是DisplayPowerController的DisplayControllerHandler处理消息超时,并且有大量的dvm_lock_sample提示registerListen...原创 2019-12-09 20:44:39 · 5188 阅读 · 0 评论 -
注册Sensor后的第一笔数据
一.概要二 .上层三.底层四.常见问题1.注册sensor后为什么有时候不报数据?2.sensor的第一笔数据什么时候上报?五.总结原创 2019-10-17 17:26:38 · 203 阅读 · 0 评论 -
Sensor-sensor日志
一.摘要 在一些传感器异常的问题中我们常常需要看最近的sensor日志,那么我们可以通过dumpsys sensorservice来看最近sensor上报的数据。二.日志的初始化已经记录 我们在SensorService.cpp中有一个std::unordered_map<int, RecentEventLogger*> mRecentEvent;对象,这个对象...原创 2019-07-23 15:12:49 · 1757 阅读 · 0 评论 -
App收集Native Crash案例
由于一直都在做android系统相关的工作,获取native crash日志文件比较方便,只要发生native crash我们直接去/data/tombstones下找就行了,然后找到当天系统的symbols文件,再配合addr2line就可以分析了。因为今天被人问了app 没有权限应该怎么获取native crash堆栈,自己也只是大概知道是通过捕获信号量的方式处理的,并没有能说得很清楚,所以花...原创 2019-06-30 03:36:38 · 1105 阅读 · 0 评论 -
无限重启-千牛app
一. 问题描述1.1 问题JIRA XXX1.2 现象 手机无限重启,清数据后能开机,恢复数据的时候还是会无限重启.1.3 结论1.无限重启的原因: 由于每次开机AccessibilityManagerService都会去解析每个有辅助功能的app,system_server每次解析到千牛时就会crash,然后陷入无限循环.2.恢复出厂设置后能开机,恢复数据时又无限重启: 恢复出厂设置后千...原创 2018-03-31 19:07:54 · 3018 阅读 · 2 评论 -
没有state设备节点导致fscanf crash
pid: 2065, tid: 3206, name: InputReader >>> system_server <<<signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x58 x0 0000000000000000 x1 0000007f9f87275b x2 0000007...原创 2018-03-03 16:42:31 · 348 阅读 · 0 评论 -
kill -3dumpStackTraces
最近在看一个watchdog问题,是由于线程D状态引起的,但是没有打印出native/kernel的调用栈,不知道这个线程导致block在哪里了,不太好分析问题,调用栈如下:"Binder:1176_17" prio=5 tid=120 Native | group="main" sCount=1 dsCount=0 obj=0x140c3100 self=0x7f74a52a00 |原创 2017-12-17 18:46:46 · 736 阅读 · 0 评论 -
linux 进程状态
"Binder:1643_E" prio=5 tid=106 Native| group="main" sCount=1 dsCount=0 obj=0x16034ee0 self=0x7f5769d200| sysTid=3830 nice=0 cgrp=default sched=0/0 handle=0x7f57011450| state=S schedstat=( 552403原创 2017-07-06 10:59:47 · 409 阅读 · 0 评论 -
android关机充电呼吸灯不亮
android关机充电原创 2017-03-11 15:24:35 · 2790 阅读 · 1 评论 -
根据进程名字查找pid
Liunx中通过进程名查找进程PID可以通过 pidof [进程名] 来查找。反过来 ,相同通过PID查找进程名则没有相关命令。在linux根目录中,有一个/proc的VFS(虚拟文件系统),系统当前运行的所有进程都对应于该目录下的一个以进程PID命名的文件夹,其中存放进程运行的N多信息。其中有一个status文件,cat显示该文件, 第一行的Name即为进程名。打开stardict程序,转载 2016-10-16 14:00:04 · 8010 阅读 · 0 评论 -
OOM Killer的运行与结构
本节介绍OOM Killer的运行与结构。 Linux中的Out Of Memory(OOM) Killer功能作为确保内存的最终手段,可以在耗尽系统内存或交换区后,向进程发送信号,强制终止该进程。 这个功能即使在无法释放内存的情况下,也能够重复进行确保内存的处理过程,防止系统停滞。还可以找出过度消耗内存的进程。本节将介绍2.6内核的OOM Killer。 确认运行、日志 进行系统转载 2016-08-09 17:48:54 · 1108 阅读 · 0 评论