Debug Android and Linux suspend and resume
积攒了一些关于调试Android和Linux下面的suspend 和 resume的经验, 在这里和大家分享一下。
希望可以有些帮助, (下面没有写Android专用的, 就是Linux通用的)。
1. no_console_suspend
在kernel启动参数里面加上no_console_suspend, 这个是最基本的, 因为kernel在把console suspend掉以后, 不管里面出了什么事情, 从串口上都看不到。 大部分在suspend/resume时候的死机都可以通过串口看到kernel Panic的信息, 这样才会知道是哪里出了问题。因为有的时候resume出错, 或者suspend到很后面出错的console不加这个参数都看不到。
2. initcall_debug
这个也许知道的人不多, 其实有的时候你不知道哪个driver在suspend/resume的时候出错的时候,很迷茫, 就想在哪里加上一些调试信息来看看是哪里的driver, 其实有些时候加的不合适的话, 会看不到很多有用的信息。其实kernel本身已经有这样的功能了(只不过不是很人性化)。
1
2
3
4
echo 1 > /sys/module/kernel/parameters/initcall_debug
echo 9 > /proc/sys/kernel/printk
<br />
第一条命令是打开initcall_debug, 这个是所有的kernel都会有的, 也可以在启动参数里面加initcall_debug来默认打开这个参数, 这样可以调试系统启动。
因为这些信息都是KERN_DEBUG级别的, 所以需要提高printk的级别才可以看到, 要不然suspend/resume的时候死掉了,你就没有机会看到这些信息了。
3. suspend_test