高通平台如何高效抓取死机定屏时的详细log信息?

2026-04-02 02:501阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计663个文字,预计阅读时间需要3分钟。

高通平台如何高效抓取死机定屏时的详细log信息?

问题:当我们遇到手机死机问题(hang issue)时,如何进行处理?如果手机死机,并且没有重启(reboot)的可能,可能的原因有哪些?

可能原因:

1.在内核中,进程中存在一些死锁(dead lock),同时Android service也堵塞了。


问题:当我们遇到了手机死机问题(hang issue),如何进行处理?

如果手机死机,并且没有重启(reboot),可能的原因:

1、在kernel中,进程中有一些dead lock,同时Android service也堵塞了(blocked),但是time interrupt和dog kick仍然能够running。因此手机没有重启。

2、Deadlock发生在Android userspace server,如service manager 或者serviceflinger。

两种情景抓取log:

1、adbshell 能够工作

通过adb获取一些信息,如adb bugreport > D:\bugreport.txt。

一些Android framework dead lock可能导致bugreport hang。因此需要先获取一些简单log,如dmesg和logcat log。再进行adb bugreport操作。获取dmesg log之后,通过sysrq 接口获取更多信息。

kernel/Documentation/sysrq.txt
显示 stack for all active CPU
echo l >/proc/sysrq-trigger
显示hold lock
echo d > /proc/sysrq-trigger
显示 hrtimer
echo q > /proc/sysrq-trigger

disk sleep(uninterruptable sleep)时显示tasks,如阻塞在mutex或者hardware register access。
echo w > /proc/sysrq-trigger
进行以上trigger后,再次获取dmesg log以防止覆盖。

通过以下trigger获取crash dump

不同平台拥有不同sysfs进入downloade mode的方式,并使能download mode
可能是以下一项:
echo 1>/sys/module/restart/parameters/download_mode
echo 1>/sys/module/msm_restart/parameters/download_mode
echo 1 >/sys/module/msm_poweroff/parameters/download_mode

如果操作adb bugreport没有block,最后triggercrash。
echo c> /proc/sysrq-trigger

2、没有枚举adb port或者adb shell不能正常工作

我们需要trigger dump,通过长按power key或者RESET_IN pin(通常连接到powerkey + volume-产生),

需要确保s2-type 配置为1 (warm reset),而不是 7 (hard reset)

pon_1 is forpower key, pon_3 is for RESET_IN pin
以8894为例,kernel/arch/arm64/boot/dts/qcom/msm-pm8994.dtsi

高通平台如何高效抓取死机定屏时的详细log信息?

qcom,pon_1 {
qcom,pon-type = <0>;
qcom,pull-up = <1>;
linux,code = <116>;
qcom,support-reset = <1>;
qcom,s1-timer = <10256>;
qcom,s2-timer = <2000>;
qcom,s2-type = <1>;
};
qcom,pon_3 {
qcom,pull-up = <1>;
qcom,s1-timer = <6720>;
qcom,s2-timer = <2000>;
qcom,s2-type = <7>;
qcom,use-bark;
};

如果仍然不工作,pull down PS_HOLDin 200ms。




本文共计663个文字,预计阅读时间需要3分钟。

高通平台如何高效抓取死机定屏时的详细log信息?

问题:当我们遇到手机死机问题(hang issue)时,如何进行处理?如果手机死机,并且没有重启(reboot)的可能,可能的原因有哪些?

可能原因:

1.在内核中,进程中存在一些死锁(dead lock),同时Android service也堵塞了。


问题:当我们遇到了手机死机问题(hang issue),如何进行处理?

如果手机死机,并且没有重启(reboot),可能的原因:

1、在kernel中,进程中有一些dead lock,同时Android service也堵塞了(blocked),但是time interrupt和dog kick仍然能够running。因此手机没有重启。

2、Deadlock发生在Android userspace server,如service manager 或者serviceflinger。

两种情景抓取log:

1、adbshell 能够工作

通过adb获取一些信息,如adb bugreport > D:\bugreport.txt。

一些Android framework dead lock可能导致bugreport hang。因此需要先获取一些简单log,如dmesg和logcat log。再进行adb bugreport操作。获取dmesg log之后,通过sysrq 接口获取更多信息。

kernel/Documentation/sysrq.txt
显示 stack for all active CPU
echo l >/proc/sysrq-trigger
显示hold lock
echo d > /proc/sysrq-trigger
显示 hrtimer
echo q > /proc/sysrq-trigger

disk sleep(uninterruptable sleep)时显示tasks,如阻塞在mutex或者hardware register access。
echo w > /proc/sysrq-trigger
进行以上trigger后,再次获取dmesg log以防止覆盖。

通过以下trigger获取crash dump

不同平台拥有不同sysfs进入downloade mode的方式,并使能download mode
可能是以下一项:
echo 1>/sys/module/restart/parameters/download_mode
echo 1>/sys/module/msm_restart/parameters/download_mode
echo 1 >/sys/module/msm_poweroff/parameters/download_mode

如果操作adb bugreport没有block,最后triggercrash。
echo c> /proc/sysrq-trigger

2、没有枚举adb port或者adb shell不能正常工作

我们需要trigger dump,通过长按power key或者RESET_IN pin(通常连接到powerkey + volume-产生),

需要确保s2-type 配置为1 (warm reset),而不是 7 (hard reset)

pon_1 is forpower key, pon_3 is for RESET_IN pin
以8894为例,kernel/arch/arm64/boot/dts/qcom/msm-pm8994.dtsi

高通平台如何高效抓取死机定屏时的详细log信息?

qcom,pon_1 {
qcom,pon-type = <0>;
qcom,pull-up = <1>;
linux,code = <116>;
qcom,support-reset = <1>;
qcom,s1-timer = <10256>;
qcom,s2-timer = <2000>;
qcom,s2-type = <1>;
};
qcom,pon_3 {
qcom,pull-up = <1>;
qcom,s1-timer = <6720>;
qcom,s2-timer = <2000>;
qcom,s2-type = <7>;
qcom,use-bark;
};

如果仍然不工作,pull down PS_HOLDin 200ms。