Kernel启动过程中被Stuck的调试
来源:互联网 发布:销售客户软件 编辑:程序博客网 时间:2024/05/17 03:12
向自定义的开发板移植Kernel时,经常会遇到Kernel启动时卡住的问题,通常,由于无法获取足够的信息,调试比较费时。一般这种问题都出现在某个驱动初始化过程中,由于失败处理时的逻辑问题导致Kernel卡住,因此如果能够得到是哪个驱动初始化失败,就很容易定位问题。
1. 方案:
Kernel中,选项KALLSYMS可以将Kernel代码中的符号信息编译到Image中,同时,如果在Command Line中,传入initcall_debug选项,则Kernel启动过程中,就会打印出如下的Log:
24 msecs [ 2.237177] initcall acpi_button_init+0x0/0x51 returned 0 28 msecs [ 0.763503] initcall init_acpi_pm_clocksource+0x0/0x16c returned 0 32 msecs [ 0.348241] initcall acpi_pci_link_init+0x0/0x43 returned 0 33 msecs [ 0.919004] initcall inet_init+0x0/0x1c7 returned 0 33 msecs [ 5.282722] initcall psmouse_init+0x0/0x5e returned 0 54 msecs [ 2.979825] initcall e100_init_module+0x0/0x4d returned 0 71 msecs [ 0.650325] initcall pnp_system_init+0x0/0xf returned 0 91 msecs [ 0.872402] initcall pcibios_assign_resources+0x0/0x85 returned 0 187 msecs [ 4.369187] initcall ehci_hcd_init+0x0/0x70 returned 0 245 msecs [ 2.777161] initcall serial8250_init+0x0/0x100 returned 0 673 msecs [ 5.098052] initcall uhci_hcd_init+0x0/0xc1 returned 0 830 msecs [ 4.067279] initcall piix_init+0x0/0x27 returned 0 1490 msecs [ 8.290606] initcall ip_auto_config+0x0/0xd70 returned 0
这样,如果驱动卡在了某个Init函数中,则很容易就能定位。
2. 相关Config:
CONFIG_PRINTK_TIME & CONFIG_KALLSYMS,同时,由于Log数据量增加,可能需要加大printk的buffer大小,CONFIG_LOG_BUF_SHIFT 14->18。
阅读全文
0 0
- Kernel启动过程中被Stuck的调试
- kernel启动过程中的调试打印
- linux kernel的启动过程
- kernel启动失败的调试方法
- kernel启动过程的三个特殊进程
- U-BOOT启动kernel的过程
- 简单Dream-rac安装过程中安装grid软件节点1报错: kernel:BUG: soft lockup - CPU#0 stuck for 22s! [nautilus:3059]
- kernel启动过程
- 转载:kernel 启动过程
- Spyder stuck onConnecting to kernel
- init_machine 在Kernel中被调用的过程
- 随笔之GoldFish Kernel启动过程中arm汇编分析
- 随笔之GoldFish Kernel启动过程中arm汇编分析
- 随笔之GoldFish Kernel启动过程中arm汇编分析
- android 在kernel中获取启动kernel命令行的参数
- User Profile Synchronization Service Gets Stuck on Starting 用户配置文件同步服务卡在“启动中”的解决方案
- Linux Kernel启动时间调试
- Linux Kernel启动中参数的处理
- java反编译工具
- Spark---Datasource(JDBC)---java
- Java高效并发之锁优化(深入理解Java虚拟机学习笔记)
- vue2整个项目中,数据请求显示loading图
- 单例模式
- Kernel启动过程中被Stuck的调试
- Fragment与Activity生命周期交织
- Android中多点触控以及手势的基础知识
- IP地址子网划分(CIDR)
- rtspsever网络编程中的socket选项之keepalive
- 【noip 2015】跳石头
- react-native热更新之在ubuntu上搭建code-push-server环境
- mysql的字符串的拼接
- 函数指针 函数指针数组 指针函数 数组指针 指针数组