当前位置:  技术问答>linux和unix

kgdbwait不等待

    来源: 互联网  发布时间:2016-12-28

    本文导语:  求助,最近搭建kgdb老是搭不起来,麻烦搭建过的大哥大姐帮忙看下吧,被这东西搞得很凌乱。 环境:目标机和开发机都是centos6.0( 内核2.6.32),已经用串口测试过两机能正常通信。 先在开发机上编译了一个2.6.32的内...

求助,最近搭建kgdb老是搭不起来,麻烦搭建过的大哥大姐帮忙看下吧,被这东西搞得很凌乱。

环境:目标机和开发机都是centos6.0( 内核2.6.32),已经用串口测试过两机能正常通信。

先在开发机上编译了一个2.6.32的内核,kernel中配置文件的相应的选项如下:

1)Prompt for development and/or incomplete code/drivers
2)CONFIG_KGDB = y
Location:   
    -> Kernel hacking   
       -> KGDB: kernel debugger
3)CONFIG_KGDB_SERIAL_CONSOLE = y (使用串口进行通信)
Location:   
    -> Kernel hacking   
       -> KGDB: kernel debugger
              -> KGDB: use kgdb over the serial console
4)CONFIG_DEBUG_RODATA = n
5)CONFIG_KGDB_LOW_LEVEL_TRAP = y
6)CONFIG_DEBUG_INFO = y
7)CONFIG_FRAME_POINTER = y
8)CONFIG_MAGIC_SYSRQ = y

编译完成之后,将开发机../arch/x86/boot/bzImage和/boot/vmlinuz还有/boot/System.map都拷贝到了目标机的/boot目录下,
修改目标的menu.lst,里面的参数设置如下:

title CentOS Linux (2.6.32-kgdb)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-kgdb ro root=/dev/mapper/vg_lys-lv_root rd_LVM_LV=vg_lys/lv_root rd_LVM_LV=vg_lys/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=zh_CN.UTF-8 KEYBOARDTYPE=pc KEYTABLE=us crashkernel=auto rhgb quiet

      kgdbwait kgdboc=ttyS0,115200
        initrd /initramfs-2.6.32-kgdb

然后先测试下这时候两机间的串口是可以正常通信的。
重启目标机,可是目标启动之后并没有等待开发机的连接而是直接就login进去了,这到底是怎么回事,跪求指教,呜呜!!!

|
kgdb通过串口调试,需要特别的串口芯片和驱动。

摘自内核源代码树中的文档:
kgdboc= [HW] kgdb over consoles.
Requires a tty driver that supports console polling.
(only serial supported for now)
Format: [,baud]


!Iinclude/linux/kgdb.h
  
  
  kgdboc internals
  
  The kgdboc driver is actually a very thin driver that relies on the
  underlying low level to the hardware driver having "polling hooks"
  which the to which the tty driver is attached.  In the initial
  implementation of kgdboc it the serial_core was changed to expose a
  low level uart hook for doing polled mode reading and writing of a
  single character while in an atomic context.  When kgdb makes an I/O
  request to the debugger, kgdboc invokes a call back in the serial
  core which in turn uses the call back in the uart driver.  It is
  certainly possible to extend kgdboc to work with non-uart based
  consoles in the future.
  
  
  When using kgdboc with a uart, the uart driver must implement two callbacks in the struct uart_ops. Example from drivers/8250.c:
#ifdef CONFIG_CONSOLE_POLL
.poll_get_char = serial8250_get_poll_char,
.poll_put_char = serial8250_put_poll_char,
#endif


    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问为何引导项中的kgdbwait参数不起作用


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3