Pav*_*ath 6 linux android linux-kernel adb android-logcat
我正在开发基于Linux内核的Android手机.我kmsg用于内核日志和adb logcat -v time平台日志.问题是内核日志显示时间,0.000000并且logcat从系统时间开始显示(例如,如果手机上的时间是10.43.00,它将显示此时的第一个日志)
现在我无法比较这两个日志中的事件,因为时基(参考)不同.任何人都可以指出如何同步这两次?
另一个解决方案类似于jpg的答案,但在另一个方向,将内核消息重定向到logcat.这样更好,因为太多的logcat消息可能会使串行控制台过载(如果它处于活动状态).
你可以在android shell中运行它:
cat /proc/kmsg | while read LINE; do echo '\06kernel\0'$LINE'\0' > /dev/log/main; done
Run Code Online (Sandbox Code Playgroud)
或者在主机shell中:
adb shell '(cat /proc/kmsg | while read LINE; do echo \\06kernel\\0$LINE\\0 > /dev/log/main; done)'
Run Code Online (Sandbox Code Playgroud)
第一次启动命令时,您将在一个位置看到所有当前的dmesg消息,但是当它们出现时,任何其他消息将被交错.
然后检查另一个shell中的logcat.如果使用-v time检查logcat,则内核消息将包含logcat和内核时间戳.当然,两者之间可能存在延迟.
另一种更简单的方法是查看消息交错:
adb shell '(logcat & cat /proc/kmsg) > /path/to/log/file'
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,识别来自内核的消息有点困难,而且您无法分辨内核时间戳与logcat时间戳的关系.
您可以创建包含内核和平台日志的单个文件,如下所示:
$adb shell
$logcat -v time -f /dev/kmsg | cat /proc/kmsg > /data/klog_plog_log.txt
Run Code Online (Sandbox Code Playgroud)
您可以使用平台日志中的时间戳来区分日志.然后使用将文件拉到本地驱动器
adb pull /data/klog_plog_log.txt > sample.txt
Run Code Online (Sandbox Code Playgroud)
请参阅http://jai-tech.blogspot.com/2012/01/taking-kernel-and-platform-logs-of.html.希望这可以帮助.
此致,JP
| 归档时间: |
|
| 查看次数: |
12746 次 |
| 最近记录: |