当前位置: 首页 > wzjs >正文

建设网站需要可以做网站的渠道

建设网站需要,可以做网站的渠道,杭州门户网站有哪些,企业黄页名单背景: 经常有学员朋友在做系统开发时候,有时候遇到binder相关的一些问题,这个时候可能就需要比较多的binder相关日志,但是正常情况下这些binder通讯的的内核日志都是没有的打印的,因为经常binder通讯太过于频繁&#…

背景:

经常有学员朋友在做系统开发时候,有时候遇到binder相关的一些问题,这个时候可能就需要比较多的binder相关日志,但是正常情况下这些binder通讯的的内核日志都是没有的打印的,因为经常binder通讯太过于频繁,如果正常版本都开放出来这些binder调试日志,那样会让系统卡顿,影响性能。
但是在分析binder驱动源码时候又可以看到类似如下日志:
在这里插入图片描述那么到底该怎么让这些日志可以打印出来呢?下面给大家介绍一下相关的打开日志的命令。
这里binder内核日志相关准备分为两节给大家分享:
第一节:主要介绍相关实战命令的使用让大家学会用命令去开放日志
第二节:主要介绍binder调试日志相关的源码分析和控制原理

实战调试命令:

通过控制debug_mask值来控制相关的binder调试日志的打开,那么debug_mask值的依据是什么呢?那就是来源下面这个枚举:
kernel-aosp14/common/drivers/android/binder.c

enum {BINDER_DEBUG_USER_ERROR             = 1U << 0, // 1BINDER_DEBUG_FAILED_TRANSACTION     = 1U << 1, // 2BINDER_DEBUG_DEAD_TRANSACTION       = 1U << 2, // 4BINDER_DEBUG_OPEN_CLOSE             = 1U << 3, // 8BINDER_DEBUG_DEAD_BINDER            = 1U << 4, // 16BINDER_DEBUG_DEATH_NOTIFICATION     = 1U << 5, // 32BINDER_DEBUG_READ_WRITE             = 1U << 6, // 64BINDER_DEBUG_USER_REFS              = 1U << 7, // 128BINDER_DEBUG_THREADS                = 1U << 8, // 216BINDER_DEBUG_TRANSACTION            = 1U << 9, // 512BINDER_DEBUG_TRANSACTION_COMPLETE   = 1U << 10,// 1024BINDER_DEBUG_FREE_BUFFER            = 1U << 11,// 2048BINDER_DEBUG_INTERNAL_REFS          = 1U << 12,// 4096BINDER_DEBUG_PRIORITY_CAP           = 1U << 13,// 8192BINDER_DEBUG_SPINLOCKS              = 1U << 14,// 16384
};

比如上面背景中我们看到有binder_debug打印,它带的参数是BINDER_DEBUG_OPEN_CLOSE
在这里插入图片描述
那么从枚举得出BINDER_DEBUG_OPEN_CLOSE = 1U << 3, // 8
所以只需要对debug_mask写入 8既可以实现让binder的中所有BINDER_DEBUG_OPEN_CLOSE相关binder_debug打印出来。

那么这个debug_mask在哪里呢?这里先直接告诉大家,是在如下目录:

NX563J:/sys/module/binder/parameters # ls
debug_mask  devices  stop_on_user_error

简单说就是在/sys/module/binder/parameters/debug_mask,这里的debug_mask文件就是要写入的文件
比如写入上面的值BINDER_DEBUG_OPEN_CLOSE为8 (注意一般需要debug机器)

NX563J:/ # echo 8 >  /sys/module/binder/parameters/debug_mask                                                                                                                                                  

然后这个时候抓取日志看看是否有显示binder的open相关日志:

130|NX563J:/ # logcat -b all -c;logcat -b kernel | grep binder                                                                                                                                                    03-04 00:33:46.170     0     0 I binder  : 30418 close vm area da398000-da496000 (1016 K) vma 10220051 pagep 60000000000f53
03-04 00:33:46.172     0     0 I binder  : binder_flush: 30418 woke 0 threads
03-04 00:33:46.172     0     0 I binder  : binder_deferred_release: 30418 threads 5, nodes 2 (ref 3), refs 8, active transactions 0
03-04 00:33:46.187     0     0 I binder  : 30385 close vm area 75d915f000-75d925d000 (1016 K) vma 10220051 pagep 60000000000f53
03-04 00:33:46.187     0     0 I binder  : 30385 close vm area 765da4f000-765db4d000 (1016 K) vma 10220051 pagep 60000000000f53
03-04 00:33:46.187     0     0 I binder  : binder_flush: 30385 woke 0 threads
03-04 00:33:46.187     0     0 I binder  : binder_flush: 30385 woke 0 threads
03-04 00:33:46.188     0     0 I binder  : binder_deferred_release: 30385 threads 1, nodes 0 (ref 0), refs 3, active transactions 0
03-04 00:33:46.195     0     0 I binder  : binder_deferred_release: 30385 threads 11, nodes 50 (ref 51), refs 53, active transactions 0
03-04 00:33:47.224     0     0 I binder  : binder_open: 30512:30512
03-04 00:33:47.224     0     0 I binder  : 30512:30512 ioctl 40046210 7fd05b5cc0 returned -22
03-04 00:33:47.224     0     0 I binder  : binder_mmap: 30512 765db5c000-765dc5a000 (1016 K) vma 200071 pagep 60000000000f53
03-04 00:33:47.499     0     0 I binder  : binder_open: 30512:30536
03-04 00:33:47.499     0     0 I binder  : 30512:30536 ioctl 40046210 765d23af04 returned -22
03-04 00:33:47.499     0     0 I binder  : binder_mmap: 30512 75f1646000-75f1744000 (1016 K) vma 200071 pagep 60000000000f53
03-04 00:33:53.466     0     0 I binder  : binder_open: 30556:30556
03-04 00:33:53.466     0     0 I binder  : 30556:30556 ioctl 40046210 7fd05b5cc0 returned -22
03-04 00:33:53.466     0     0 I binder  : binder_mmap: 30556 765db56000-765dc54000 (1016 K) vma 200071 pagep 60000000000f53
03-04 00:33:53.619     0     0 I binder  : binder_open: 30556:30579
03-04 00:33:53.619     0     0 I binder  : 30556:30579 ioctl 40046210 765d23af04 returned -22
03-04 00:33:53.619     0     0 I binder  : binder_mmap: 30556 765cfa9000-765d0a7000 (1016 K) vma 200071 pagep 60000000000f53

明显可以看到open,closer日志

如果想要多个开放多个枚举,那么只需要做或运算,然后最后结果写入 debug_mask既可以
比如开放如下几个枚举:

BINDER_DEBUG_USER_ERROR             = 1U << 0, // 1
BINDER_DEBUG_FAILED_TRANSACTION     = 1U << 1, // 2
BINDER_DEBUG_DEAD_TRANSACTION       = 1U << 2, // 4
BINDER_DEBUG_OPEN_CLOSE             = 1U << 3, // 8

那么最后写入的值就是8 + 4+ 2+ 1 = 15

NX563J:/ # echo 15 >  /sys/module/binder/parameters/debug_mask                                                                                                                                                  

和binder相关的/sys/module/还有一个binder_alloc,它主要是binder 申请相关的日志,这里枚举有差异

kernel-aosp14/common/drivers/android/binder_alloc.c

enum {BINDER_DEBUG_USER_ERROR             = 1U << 0, // 1BINDER_DEBUG_OPEN_CLOSE             = 1U << 1, // 2BINDER_DEBUG_BUFFER_ALLOC           = 1U << 2, // 4BINDER_DEBUG_BUFFER_ALLOC_ASYNC     = 1U << 3, // 8
};

这里写入值方式和binder下面节点一样

NX563J:/ # echo 7 >  /sys/module/binder_alloc/parameters/debug_mask                                                                                                                                                  

写完后可以看到日志有大量的alloc相关打印:

03-04 00:42:12.716     0     0 I binder_alloc: 15501: binder_alloc_buf size 128 got buffer 0000000000000000 size 1040384
03-04 00:42:12.716     0     0 I binder_alloc: 15501: allocate pages 0000000000000000-0000000000000000
03-04 00:42:12.716     0     0 I binder_alloc: 15501: add free buffer, size 1040256, at 0000000000000000
03-04 00:42:12.716     0     0 I binder_alloc: 15501: binder_alloc_buf size 128 got 0000000000000000
03-04 00:42:12.717     0     0 I binder_alloc: 15501: binder_free_buf 0000000000000000 size 128 buffer_size 128
03-04 00:42:12.717     0     0 I binder_alloc: 15501: free pages 0000000000000000-0000000000000000
03-04 00:42:12.717     0     0 I binder_alloc: 15501: merge free, buffer 0000000000000000 do not share page with 0000000000000000 or 0000000000000000
03-04 00:42:12.717     0     0 I binder_alloc: 15501: free pages 0000000000000000-0000000000000000
03-04 00:42:12.717     0     0 I binder_alloc: 15501: add free buffer, size 1040384, at 0000000000000000
03-04 00:42:12.717     0     0 I binder_alloc: 15733: binder_alloc_buf size 9648 got buffer 0000000000000000 size 1040384
03-04 00:42:12.717     0     0 I binder_alloc: 15733: allocate pages 0000000000000000-0000000000000000
03-04 00:42:12.717     0     0 I binder_alloc: 15733: add free buffer, size 1030736, at 0000000000000000
03-04 00:42:12.717     0     0 I binder_alloc: 15733: binder_alloc_buf size 9648 got 0000000000000000
03-04 00:42:12.717     0     0 I binder_alloc: 15733: binder_free_buf 0000000000000000 size 9648 buffer_size 9648
03-04 00:42:12.717     0     0 I binder_alloc: 15733: free pages 0000000000000000-0000000000000000
03-04 00:42:12.717     0     0 I binder_alloc: 15733: merge free, buffer 0000000000000000 do not share page with 0000000000000000 or 0000000000000000
03-04 00:42:12.717     0     0 I binder_alloc: 15733: free pages 0000000000000000-0000000000000000
03-04 00:42:12.717     0     0 I binder_alloc: 15733: add free buffer, size 1040384, at 0000000000000000
03-04 00:42:12.963     0     0 I binder_alloc: 15501: binder_alloc_buf size 304 got buffer 0000000000000000 size 304
03-04 00:42:12.963     0     0 I binder_alloc: 15501: allocate pages 0000000000000000-0000000000000000
03-04 00:42:12.963     0     0 I binder_alloc: 15501: binder_alloc_buf size 304 got 0000000000000000
03-04 00:42:12.963     0     0 I binder_alloc: 1114: binder_free_buf 0000000000000000 size 48 buffer_size 48
03-04 00:42:12.963     0     0 I binder_alloc: 1114: free pages 0000000000000000-0000000000000000
03-04 00:42:12.963     0     0 I binder_alloc: 1114: merge free, buffer 0000000000000000 do not share page with 0000000000000000 or 0000000000000000
03-04 00:42:12.963     0     0 I binder_alloc: 1114: free pages 0000000000000000-0000000000000000
03-04 00:42:12.963     0     0 I binder_alloc: 1114: add free buffer, size 1040384, at 0000000000000000
03-04 00:42:12.964     0     0 I binder_alloc: 15501: binder_free_buf 0000000000000000 size 304 buffer_size 304
03-04 00:42:12.964     0     0 I binder_alloc: 15501: free pages 0000000000000000-0000000000000000
03-04 00:42:12.964     0     0 I binder_alloc: 15501: add free buffer, size 304, at 0000000000000000
03-04 00:42:12.964     0     0 I binder_alloc: 1114: binder_alloc_buf size 48 got buffer 0000000000000000 size 1040384
03-04 00:42:12.964     0     0 I binder_alloc: 1114: allocate pages 0000000000000000-0000000000000000
03-04 00:42:12.964     0     0 I binder_alloc: 1114: add free buffer, size 1040336, at 0000000000000000
03-04 00:42:12.964     0     0 I binder_alloc: 1114: binder_alloc_buf size 48 got 0000000000000000

更多framework实战开发,请关注下面“千里马学框架”


文章转载自:

http://XB0duWSW.nhpmn.cn
http://uyQrpM3n.nhpmn.cn
http://iehIvsS4.nhpmn.cn
http://v4kacvtK.nhpmn.cn
http://qu1Xd0WB.nhpmn.cn
http://eI6KvLyx.nhpmn.cn
http://cPdqEQV5.nhpmn.cn
http://AaHQoGLf.nhpmn.cn
http://zlcvPgdN.nhpmn.cn
http://NjiSjPlV.nhpmn.cn
http://PFRSVZKe.nhpmn.cn
http://Lp3QQAQk.nhpmn.cn
http://646Lakmx.nhpmn.cn
http://tfz9VxcO.nhpmn.cn
http://U4qiCCyk.nhpmn.cn
http://OlhQnjNJ.nhpmn.cn
http://V0V2RTDr.nhpmn.cn
http://2O9GWc0v.nhpmn.cn
http://9V1zP5v5.nhpmn.cn
http://II1EY8J2.nhpmn.cn
http://8RQkZt87.nhpmn.cn
http://U6LhNMQB.nhpmn.cn
http://y5aVqmvZ.nhpmn.cn
http://caZPgdZv.nhpmn.cn
http://Tsr8AwDr.nhpmn.cn
http://AQNTleTV.nhpmn.cn
http://rIBr5Aiq.nhpmn.cn
http://oxanG21y.nhpmn.cn
http://Qhld42o9.nhpmn.cn
http://ePwb42ty.nhpmn.cn
http://www.dtcms.com/wzjs/656346.html

相关文章:

  • 手机移动端网站建设宣传数字电视播放的视频格式
  • 小企业网站 优帮云freenom怎么做网站
  • 宜宾市建设工程质量监督站网站网站为什么做静态
  • 网站经常出现502自己建设个人网站要花费多少
  • python做网站 框架good work wordpress
  • 电脑网站兼职在哪里做化妆品公司网站设计
  • 网站开发动态结构设计免费订单管理app
  • php开发一个企业网站价格北京电力交易中心谢开
  • 外卖网站那家做的好给卖假性药的做网站一般要判多久
  • 采集网站怎么做ptp网站开发
  • 建设网站需要多大域名空间管理外贸网站模板
  • 网站如何有排名站长检测同ip网站很多怎么办
  • 社交网站 备案快速搭建网站后天台
  • seo网站推广可以自己搞吗公司网站翻译工作怎么做
  • 易尔通做网站怎么样网站模板平台
  • 四川品牌网站建设广东网站建设发信息
  • 天津河北做网站的公司排名14版哥斯拉的官方做的宣传网站
  • 最美logo图案大全宜春seo网站推广
  • 网站关键词选取方法微信外链网站开发
  • 安徽省建设厅网站打不开网站外链建设教程
  • 莆田网站建设制作想做网络营销推广
  • 海口网站建设解决方案网址链接查询
  • 备案之后怎样把 放到网站上做网站需要后端吗
  • 玖云建站系统郑州seo询搜点网络效果佳
  • 安徽工程建设官方网站沈阳德泰诺网站建设公司
  • 湖南做网站 e磐石网络斗破苍穹制作公司
  • 网站搜索出来有图片二级建造师证件查询全国联网
  • 做境外的网站网站违法么在线制作带字图片
  • 运营一个网站的成本长春网络建站
  • 深圳网站设计按天收费有名的网站建设