本篇文章主要介绍展讯平台手机开发中的部分重启问题知识点,通过阅读本篇文章,您将收获以下内容:

一、 User 版本 默认开启 sysdump 方法

欢迎关注微信公众号:程序员Android

微信公众号:ProgramAndroid

我们不是牛逼的程序员,我们只是程序开发中的垫脚石。

一、 User 版本 默认开启 sysdump 方法

首先,为什么要这么干?userdebug 版本无法复现,User 版本 可以复现,这样才有此默认开启sysdump的方案。

那么展讯平台user版本默认开启sysdump 方案

修改一下代码device\sprd\xxxx\common\rootdir\root\init.common.rcon post-fs-data 下添加:

// 设置 Ylog 默认开启开关 1 开启,0或不写 关闭
setprop persist.ylog.enabled 1
start ylog
// 设置sysdump 默认开关属性值 开启为true  关闭 falsesetprop debug.sysdump.enabled truesetprop persist.sys.eng.reset 0

在代码中添加后,可以进行一下操作查看是否成功

  1. 确认是否开启sysdump 开关*#*#83781#*#* (进入工程模式菜单)->DEBUG&LOG -> YLog-> Setting -> Sysdump Enable (开启sysdump)

  1. 确认是否开Ylog*#*#83781#*#* (进入工程模式菜单)->DEBUG&LOG -> YLog (开启ylog)

Ylog关闭,sysdump 开关默认开启

二、插入SD卡 抓取Sysdump log

注意事项 一定要 插入4G及以上的SD卡,否则无法抓的重启的dump log

一定要 插入4G及以上的SD卡,否则无法抓的重启的dump log

三、 sysdump log 分析

插入SD 卡后,成功dump log信息如下:

dump log 成功的界面

dump log成功后,我们需要解析 sysdump log,解析过程中需要使用对应版本的vmlinux(out/target/product/sp9832e_1h10_go/obj/KERNEL/vmlinux) 以及 crash_arm(vendor/sprd/tools/crash/crash_arm) 解析脚本来解析dumpcore 文件。

新建解析dump log目录

  1. 将 vmlinux 、crash_arm、 sysdump log 放置同一目录

cp out/target/product/sp9832e_1h10_go/obj/KERNEL/vmlinux reboot/

cp vendor/sprd/tools/crash/crash_arm reboot/

将 vmlinux crash_arm sysdump log 放置同一目录

  1. 将 sysdump 所有文件 追加到一个文件中

将sysdump 所有文件 追加到一个文件中

  1. 使用 crash_arm 脚本 联合 vmlinux 解析 sysdump log

使用 crash_arm 脚本 联合 vmlinux 解析sysdump log

  1. 使用 Log 命令 将 Crash log追加到指定文件中

使用 log 命令 读取log 到指定文件

  1. 查看log,分析重启的具体原因

重启log举例

四、展讯平台抓取重启 串口log的方案

  1. 调高 Kernel log 等级为 7kernel/arch/arm/boot/dts/<sprd-xx-yourboard>.dts,将bootargs = ""里修改loglevel字段 1 修改为 7 loglevel=7, console=ttyS1,115200n8 。loglevel 即可。

调高 **Kernel log** 等级为 **7**

  1. 将 logcat log 重定向到 串口

修改init.common.rc代码(device/sprd/sharkle/common/rootdir/root/init.common.rc)。logcat重定向** Service** .

+service logcat /system/bin/logcat -f /dev/kmsg *:w+ class main+ user root+ group log+ oneshoton bootchown system system /proc/wcn_gnss/startchown system system /proc/wcn_gnss/stop
  1. disabble SElinux

在 init.cpp (/system/core/init/init.cpp)中,让selinux_is_enforcing(void)函数直接返回false,同时注掉selinux_status_from_cmdline()函数。

#if 0static selinux_enforcing_status selinux_status_from_cmdline() {selinux_enforcing_status status = SELINUX_ENFORCING;import_kernel_cmdline(false, [&](const std::string& key, const std::string& value, bool in_qemu) {        if (key == "androidboot.selinux" && value == "permissive") {status = SELINUX_PERMISSIVE;}});    return status;
}#endifstatic bool selinux_is_enforcing(void){#if 0if (ALLOW_PERMISSIVE_SELINUX) {        return selinux_status_from_cmdline() == SELINUX_ENFORCING;}    return true;#elsereturn false;#endif}

五、展讯平台判断重启类型

  1. 在main.log 中查看

在 main.log 中搜索关键字 bootmode

搜索关键字 bootmode

2.在 phone.info 文件中查看

在 Ylog ->poweron->aplog 目录下的phone.info 文件中 搜索关键字 bootmode

搜索关键字 bootmode

六、展讯平台关闭 sysdump 与watchdog关联

关闭sysdump 与watchdog 关联,防止开启sysdump 后watchdog被默认关闭,导致无法抓取复现到重启log的dump。kernel/drivers/soc/sprd/debug/sysdump/sysdump.c

            sysdump_status = 1;sprd_set_reboot_mode("dumpenable");set_sysdump_enable(1);//****************-           sysdump_enable_watchdog(0);//*************} else if (!strncmp(sysdump_buf, "off", 3)) {pr_emerg("sprd_sysdump_write: disable user version sysdump!!!\n");sysdump_status = 0;

删除 sysdump_enable_watchdog

至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。期待您的关注,

如有侵权,请联系小编,小编对此深感抱歉,同时小编会立即停止侵权行为。

欢迎关注微信公众号:程序员Android

微信公众号:ProgramAndroid

我们不是牛逼的程序员,我们只是程序开发中的垫脚石。

点击阅读原文,获取更多福利

Android 手机重启问题解决方案相关推荐

  1. Android 手机重启解决方案

    本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容: 1.MTK 平台AEE 搜集重启问题介绍 欢迎关注微信公众号:程序员Android 微信公众号:Progra ...

  2. Android 手机重启相关内容

    极力推荐Android 开发大总结文章:欢迎收藏 程序员Android 力荐 ,Android 开发者需要的必备技能 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以 ...

  3. mac android手机调试,mac 无法连接android手机进行调试 解决方案

    查看usb设备信息 system_profiler SPUSBDataType Android: Product ID: 0x1052 Vendor ID: 0x12d1  (Huawei Techn ...

  4. Mac上Android手机无法连接解决方案

    用mac电脑开发Android程序的时候,有时候会发现adb连接不上手机,这时候首先你要查找你的开发者选项里面usb调试功能是不是打开了,不可以的话你可以重启一下开发工具,如果打开了还是不能连接的时候 ...

  5. mac连接手机 vm_mac 无法连接android手机进行调试 解决方案

    第一步:查看usb设备信息 在 终端输入:system_profiler SPUSBDataType     可以查看连接的usb设备的信息 比如我的usb信息如下(部分内容): Android: P ...

  6. 在Linux下adb连接不上android手机的终极解决方案

    2013-07-25 17:19:15|  分类: android|举报|字号 订阅 1.做android开发的过程,碰到了Linux下adb识别不了android设备的问题,刚开始在网上google ...

  7. Android 手机蓝牙遥控器解决方案

    驱动力(需求): 女朋友觉得躺床上用ipad看电视剧不爽,对睡姿要求太高,还容易砸到自己,所以提出需求,没辙,搞起来: 现有设备: Rk3288 开发版一个,dell 显示器一个,小音箱一对: 思路: ...

  8. 手机android系统问题怎么解决方案,4解决Android系统崩溃问题的解决方案

    第1部分:如何抢救Android系统崩溃的数据? 当您遇到Android系统崩溃时,在寻找解决方案以解决问题之前,请确保检索存储在设备上的所有数据和信息.这可能听起来很乏味,但确实是非常重要的一步. ...

  9. unity3d shader编程中GrabPass 在某些android手机上失效的解决方案

    unity3d shader编程中GrabPass 在某些android手机上失效的解决方案 参考文章: (1)unity3d shader编程中GrabPass 在某些android手机上失效的解决 ...

最新文章

  1. C++实现二叉搜索树的查找(附完整源码)
  2. C# 小闹钟 v3.0
  3. LintCode: Search A 2d Matrix
  4. Linux环境 安装 Redis-6.2.6 配置运行_01
  5. 永洪bi_案例分享!永洪BI助力知名三甲医院数字化转型升级
  6. java文件怎么一行一行读,Java 读文件内容如何显示在一行上
  7. 国外大神整理的 2019 年 Java 权威开发路线图,Java大神养成记
  8. 冲突等价(ConflictEquivalence) 可串行化调度(Serializable Schedules)
  9. 手机号码归属地 mysql_最新手机号段归属地数据库 (2021年1月版) 471402行
  10. vc6.0与vc2005配置对比
  11. 什么是超定方程,如何解?
  12. php实现 三角形_HTML纯CSS绘制三角形(各种角度)
  13. 关于想写我与Java的故事,满脑子却都是与JavaCV纠缠不清的那段日子
  14. 2023年全国最新高校辅导员精选真题及答案53
  15. 宝塔面板建立的网站为什么访问不了
  16. 怎么在百度地图上标注公司地址
  17. java comm api_java基于RXTXcomm.jar的串口通信
  18. WIDER FACE AND PEDESTRIAN CHALLENGE - WIDER CHALLENGE
  19. Flume KafkaChannel的使用
  20. 坚持到底就是成功,坚持到底就是富有,坚持到底就是胜利

热门文章

  1. Unity_飘伤害_053
  2. IPSEC.CONF(5) - IPsec配置
  3. java计算机毕业设计教学质量测评系统源码+系统+数据库+lw文档
  4. Docker学习文档(个人向)
  5. 缓存区溢出攻击实验(1)
  6. eNSP报40错误 Virtualbox启动设备失败 解决办法
  7. 32avalon - 指令ms-rules(自定义验证规则)
  8. 选型宝访谈:微软CRM X 全球顶尖AI技术=?
  9. CISCO ASAv 9.15 - 体验思科上一代防火墙
  10. 【异周话题 第 16 期】2018年,你最期待的前端开发技术有哪些?