Chinaunix

标题: [kdb]ubuntu下使用kdb console无输出,究竟是怎么回事? [打印本页]

作者: nswcfd    时间: 2015-04-02 11:24
标题: [kdb]ubuntu下使用kdb console无输出,究竟是怎么回事?
ubuntu版本: 14.04.1
内核版本: 3.13.0-36-generic

1. grub2启动过程中,选择recovery mode,增加break参数,停在(initramfs)的shell里面
    echo kbd > kgdboc (kgdbboc的模块参数)
    echo g > sysrq-trigger
    可以正常触发kdb,正常执行kdb命令,说明内核可以正常支持kdb

2. 退出break shell,继续recovery mode启动,选择root,drop to root shell
   执行同样的命令
   echo g 之后控制台就没有任何输出......
   但实际上,此时是可以“盲打”kdb命令的,输入go,可以退出kdb,然后看到刚才所有kdb命令的输出
  (如果通过console启动参数定义两个console:console=ttyS0 console=tty,盲打的时候可以在ttyS0的串口上看到输出)

3. 如果不选择recovery mode,正常启动,在文本界面下效果同2(X界面也是,跟是否使用kms没有关系)

那么问题来了,究竟是什么原因导致2的行为跟1不一样,ubuntu的启动过程中究竟做了什么?
recovey mode的启动过程中,consonle的分辨率发生过调整,字体也变化过,这会影响tty的输出吗?
难道中间有什么进程在截获tty的输出?(可是recovey模式下就只有recovery+shell两个进程了)


作者: nswcfd    时间: 2015-04-02 11:33
补充,内核启动过程中闪屏时间点的日志显示,内核加载了drm模块。
不太了解,这有关系么?
作者: nswcfd    时间: 2015-04-02 12:18
再补充一个现象,以console=tty console=ttyS0启动,
在非kdb模式下,两个console可以同时显示kernel的message,
但是进入kdb之后(kgdboc=ttyS0),只有串口有输出,tty没有,
等到go退出kdb之后,所有的kdb输出才在tty上呈现。

但是,与1楼一样,同样的配置,在break启动参数(initramfs)下,却是两个终端都有输出。
作者: nswcfd    时间: 2015-04-07 17:02
更新:从console_driver的角度看已经输出到tty/console了,只是没有反映到屏幕上,感觉中间有一层buffer存在。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2