android user 版本如何手动触发dump

项目需要在android user版本增加手动触发dump方法,用以确认user版本发生dump后系统是重启还是真正发生dump卡机! 本文以qcom平台项目为例描述所做的修改,留下足迹以备后忘。

闲言少叙,开整上干货:

一、修改bin文件
    本文以qcom 平台./vendor/bin/test_diag 为例
    文件路径;
    android/vendor/qcom/proprietary/diag/test/Android.mk
    android/vendor/qcom/proprietary/diag/test/test_diag.c
    
    修改内容:
    Android.mk
    LOCAL_SHARED_LIBRARIES += libcutils
    
    在main函数中增加下面的代码
    
    printf("test_diag:   ------------------------------------------------------------- before div 0 \n" );
    //if(state[0] == '1'){
    /*    int error = 1/0;     // erro 1
        char * array=0;
        array[0]='a';
        array[1]='b';

        free(array);
        printf("test_diag: -------------------------------------------------------------null point err  %s  \n", array);
        */

    //#include <stdlib.h>
    //system("ls -al  /vendor/bin/test_diag");
    system("echo c > /proc/sysrq-trigger");
    
    /*
    printf("test_diag:   ------------------------------------------------------------- before  trigger_sysrq.sh  \n" );
    system("./vendor/etc/init/hw/trigger_sysrq.sh");
    
    trigger_sysrq.sh的脚本:
    #!/system/bin/sh
    su -c 'echo c > /proc/sysrq-trigger'
    */
        
    //}
    printf("test_diag:   ------------------------------------------------------------- after div 0  \n" );

二、修改rc文件,改变权限
    文件路径;android/device/qcom/common/rootdir/etc/init.qcom.rc
    
    service dump_test /vendor/bin/test_diag
        class late_start
        user root
        group root
        disabled
        oneshot
        
    on property:sys.boot_completed=1
        chmod 0777 /proc/sysrq-trigger
        #chown root shell /proc/sysrq-trigger
        #start dump_test
    
        
    
    

三、修改te文件,增加selinux权限
    文件路径;android/device/qcom/sepolicy/vendor/common/diag.te
    
    allow diag adbd:fd use;
    allow diag self:capability dac_override;
    allow diag vendor_shell_exec:file execute_no_trans;
    allow diag proc_sysrq:file write;
    allow diag vendor_toolbox_exec:file execute_no_trans;
    allow diag proc_sysrq:file open;

    allow shell devpts:chr_file ioctl;
    allow shell vendor_file:file getattr;
    allow shell vendor_toolbox_exec:file getattr;
    allow shell diag_exec:file { execute getattr open read execute_no_trans };

    allow vendor_shell proc_sysrq:file { open write execute execute_no_trans };
    
    在添加 execute 后会违反neverallow规则需要临时添加策略(注意此处修改会引入xts测试项fail)
    android/system/sepolicy/private$ git df ./
diff --git a/private/domain.te b/private/domain.te
index e1663c5..e44f428 100644
--- a/private/domain.te
+++ b/private/domain.te
@@ -187,6 +187,7 @@ neverallow {
     -appdomain # for oemfs
     -bootanim # for oemfs
     -recovery # for /tmp/update_binary in tmpfs
+    -vendor_shell #jimbo for user crash_dump
 } { fs_type -rootfs }:file execute;
 
 #
@@ -210,6 +211,7 @@ neverallow {
     userdebug_or_eng(`-mediaswcodec')
     -api-daemon
     -child-daemon
+    -vendor_shell #jimbo for user crash_dump
 } {
     file_type
     -system_file_type


四、执行结果:
    命令:
    adb shell ./vendor/bin/test_diag
    
    结果:
    $ ./vendor/bin/test_diag                            
    test_diag:   ------------------------------------------------------------- before div 0 
    -rwxr-xr-x 1 root shell 33276 2009-01-01 00:00 /vendor/bin/test_diag
 

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

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

相关文章

Typescript学习笔记(2.0)

ts编译选项 tsc app.ts -w 参数-w&#xff0c;就是对app.ts进行监视&#xff0c;每次该文件改变时就会自动编译 **:任意目录 *&#xff1a;任意文件 接口 接口用来定义一个类结构&#xff0c;用来定义一个类中应该包含哪些属性和方法&#xff0c;同时接口也可以当做类型…

Profinet与以太网Ethernet的区别

在工业自动化和网络通信领域&#xff0c;Profinet和以太网Ethernet是两种常见的通信协议。尽管它们都基于以太网技术&#xff0c;但在技术规范、应用领域、通信速度和实时性、系统兼容性和互操作性以及数据处理和网络管理等方面存在显著差异。 一、技术规范和应用领域 以太网 …

爬虫基础之Web网页基础

在探讨爬虫技术的深入应用之前&#xff0c;了解Web网页的基础知识是至关重要的。Web网页是互联网上的基本构成单元&#xff0c;而爬虫则是与这些网页交互的自动化程序。本文将介绍Web网页的基础知识&#xff0c;包括HTML、CSS、JavaScript以及它们在爬虫技术中的角色。 HTML&a…

基于微信小程序的课堂考勤系统的设计与实现(论文+源码)_kaic

基于微信小程序的课堂考勤系统的设计与实现 摘 要 在高校教育普及的今天&#xff0c;学生人数日益增多&#xff0c;为保证课堂质量&#xff0c;教师多要在课前进行考勤。因此本设计提出基于微信小程序的课堂考勤系统&#xff0c;增加了定位功能&#xff0c;避免了“假打卡”…

前端开发知识(一)-html

1.前端开发需掌握的内容&#xff1a; 2.前端开发的三剑客&#xff1a;html、css、javascript Vue可以简化JavaScpript流程。 Element&#xff08;饿了么开发的&#xff09; &#xff1a;前端组件库。 Ngix&#xff1a;前端服务器。 3.前端开发工具&#xff1a;vscode 1)按…

基于Java+SpringBoot+Vue的学生心理咨询评估系统

前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 哈喽兄弟们&#xff0c;好久不见哦&#xff5…

乐尚代驾六订单执行一

加载当前订单 需求 无论是司机端&#xff0c;还是乘客端&#xff0c;遇到页面切换&#xff0c;重新登录小程序等&#xff0c;只要回到首页面&#xff0c;查看当前是否有正在执行订单&#xff0c;如果有跳转到当前订单执行页面 之前这个接口已经开发&#xff0c;为了测试&…

【MySqL数据库的基本语法】

SQL语言&#xff1a;结构化查询语言 DDL&#xff1a;数据定义语言&#xff08;create创建、drop丢弃、删除、alter修改&#xff09; DML&#xff1a;数据操纵语言&#xff08;insert添加、update、delete&#xff09; DQL&#xff1a;数据查询语言&#xff08;select、show、…

Linux嵌入式学习——数据结构——线性表的链式结构

线性表的链式存储 解决顺序存储的缺点&#xff0c;插入和删除&#xff0c;动态存储问题。 特点&#xff1a; 线性表链式存储结构的特点是一组任意的存储单位存储线性表的数据元素&#xff0c;存储单元可以是连续的&#xff0c;也可以不连续。可以被存储在任意内存未被占…

四、单线程多路IO复用+多线程业务工作池

文章目录 一、前言1 编译方法 二、单线程多路IO复用多线程业务工作池结构三、重写Client_Context类四、编写Server类 一、前言 我们以及讲完单线程多路IO复用 以及任务调度与执行的C线程池&#xff0c;接下来我们就给他结合起来。 由于项目变大&#xff0c;尝试解耦项目&#…

47.简易电压表的设计与验证(2)

&#xff08;1&#xff09;Verilog 代码&#xff1a; module adc_collect(input clk ,input reset_n ,input [7:0] adc_data ,output clk_adc );wire clk_adc_a ;…

chrome 插件:content-script 部分逻辑在页面无法生效,可考虑插入 script 到页面上

背景: 某页面有个输入框, 用的应该是什么库里的组件, 直接修改内容不生效/机制不明确, 于是使用 paste event 粘贴到输入框, 结果发现也不行 定位: 使用 mutationObserver , 发现事件确实触发了, 输入框内容变了, 但马上又变回来了, 于是怀疑是输入框组件有做 mutationObers…

软考上岸后,我过上了周末双休的生活

很多人说这个证书考了没用&#xff0c;但在我周围的一些企业是很认可的&#xff0c;我也在考了这个证之后&#xff0c;开始换工作&#xff0c;薪资涨了2倍不说&#xff0c;还可以从事项目管理的工作&#xff0c;算是达到了职业目标。 况且这个证书还能落户&#xff0c;像有一些…

提交高通量测序处理数据到 GEO --- 操作流程

❝ 写在前面 由于最近在提交课题数据到 NCBI 数据库&#xff0c;整理了相关笔记。本着自己学习、分享他人的态度&#xff0c;分享学习笔记&#xff0c;希望能对大家有所帮助。推荐先按顺序阅读往期内容&#xff1a; 1. 提交高通量测序数据到 GEO --- 说明书 2. 提交高通量测序原…

基于机器学习的二手房价格分析与预测设计与实现

概述 随着西安房地产市场的不断发展和变化&#xff0c;对二手房价格的准确预测变得至关重要。本研究旨在利用机器学习技术对西安市二手房价格进行深入分析与预测&#xff0c;通过对原始数据进行数据预处理和特征提取&#xff0c;以构建有效的预测模型。通过数据分析和可视化&a…

LabVIEW学习-LabVIEW处理带分隔符的字符串从而获取数据

带分隔符的字符串很好处理&#xff0c;只需要使用"分隔符字符串至一维字符串数组"函数或者"一维字符串数组至分隔符字符串"函数就可以很轻松地处理带分隔符地字符串。 这两个函数所在的位置为&#xff1a; 函数选板->字符串->附加字符串函数->分…

第13周 简历职位功能开发与Zookeeper实战

第13周 简历职位功能开发与Zookeeper实战 本章概述1. Mysql8窗口函数over使用1.1 演示表结构与数据1.2 案例1:获取男女总分数1.3 案例2****************************************************************************************本章概述 1. Mysql8窗口函数over使用 参考案例…

从零开始学习机器学习,掌握AI未来的关键!

从零开始学习机器学习 1. 介绍1.1 人工智能&#xff08;AI&#xff09;概述1.2 机器学习在人工智能中的应用1.3 机器学习基础概念 2. 监督学习2.1 什么是监督学习2.2 回归分析2.3 分类问题2.4 模型评估和选择 3. 无监督学习3.1 什么是无监督学习3.2 聚类算法3.3 降维技术 4. 深…

Elasticsearch 7.x入门学习-Java API操作

1 创建项目 在idea开发工具中创建Maven项目 修改 pom 文件&#xff0c;增加 Maven 依赖关系 <dependencies><dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>7.8.0</versi…

C语言 | Leetcode C语言题解之第268题丢失的数字

题目&#xff1a; 题解&#xff1a; /* 求和运算 */ /* 对[0,n]求和, 减去数组每个元素, 得出丢失的元素 */ int missingNumber(int* nums, int numsSize){int i;int sum numsSize;for (i 0; i < numsSize; i) {sum i - nums[i];}return…